news 2026/4/23 13:10:25

uniapp 使用 XMLHttpRequest发送二进制上传文件 可使用预上传接口上传到华为obs

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
uniapp 使用 XMLHttpRequest发送二进制上传文件 可使用预上传接口上传到华为obs
<template> <button @click="changeMessage">选择文件</button> <view v-show="false" :path="path" :change:path="requestModule.uploadOBS"></view> </template> <script setup> import { ref } from 'vue' import { getCurrentInstance } from 'vue' const { proxy } = getCurrentInstance() // 把回调挂到实例上,renderjs 就能通过 callMethod 调到 proxy.$onRenderData = (data) => { console.error('str:', data) } const path = ref(null) const changeMessage = () => { uni.chooseImage({ count: 1, // 最多选择数量 sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图 sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机 success: async (res) => { // tempFilePath 可以作为 img 标签的 src 属性显示图片 const tempFilePaths = res.tempFilePaths path.value = tempFilePaths[0]; }, fail: (err) => { console.error('选择图片失败:', err) } }) } </script> <script> // 专门给 renderjs 回调用 ownerVm.callMethod('onRenderData', "999999") 就能调到 /* export default { methods: { onRenderData(data) { console.error('str:', data) } } } */ </script> <script module="requestModule" lang="renderjs"> export default { methods: { /* 1. 逻辑层 → renderjs */ uploadOBS(newVal, oldVal, ownerVm, vm) { console.error('path:', newVal) this.getFileAsArrayBuffer2(newVal).then(res => { console.error('arrayBuffer:', res) return this.uploadArrayBuffer(res,'https://jszj-dev.obs.cn-east-3.myhuaweicloud.com/2011725287372374017/jszj_lp_merchant_apply_for_application_materials_file_id/20260116/1762482093185_1768566856106.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20260116T123416Z&X-Amz-SignedHeaders=host&X-Amz-Credential=HPUAACHPJ15SJKPZGOAP%2F20260116%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Expires=86400&X-Amz-Signature=29eb09d67a7bf73afb199e75148c57d73d13d65146fe6bd351b479cc0ebd66d1','image/jpeg'); }).then(res => { console.error('upload:', res) }).catch(err => { }) //调用vue2方法 //ownerVm.callMethod('onRenderData', "999999") //调用vue3方法 ownerVm.callMethod('$onRenderData', "999999") }, getFileAsArrayBuffer2(filePath) { return new Promise((resolve, reject) => { const xhr = new XMLHttpRequest() xhr.open('GET', filePath, true) xhr.responseType = 'arraybuffer' xhr.onload = function() { if (xhr.status === 200) { resolve(xhr.response) } else { reject(new Error('Failed to load file')) } } xhr.onerror = function() { reject(new Error('Network error')) } xhr.send() }) }, uploadArrayBuffer(arrayBuffer, uploadUrl, fileType = 'application/octet-stream') { return new Promise((resolve, reject) => { const xhr = new XMLHttpRequest(); /* 1. 打开连接 */ xhr.open('PUT', uploadUrl, true); /* 2. 设置请求头 */ xhr.setRequestHeader('Content-Type', fileType); /* 3. 响应类型(按需要) */ xhr.responseType = 'arraybuffer'; /* 4. 上传进度 */ xhr.upload.onprogress = function(e) { if (e.lengthComputable) { const percent = (e.loaded / e.total) * 100; console.log('上传进度:', percent.toFixed(2) + '%'); } }; /* 5. 成功/失败 */ xhr.onload = function() { if (xhr.status >= 200 && xhr.status < 300) { resolve(xhr.response); // 服务端返回的 ArrayBuffer } else { reject(new Error(`上传失败 ${xhr.status}`)); } }; xhr.onerror = () => reject(new Error('网络错误')); /* 6. 发送二进制 */ xhr.send(arrayBuffer); }); } } } </script> <style> </style>
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/14 7:31:42

SAM3迁移指南:从传统CV方法到AI分割模型

SAM3迁移指南&#xff1a;从传统CV方法到AI分割模型 1. 技术背景与核心价值 计算机视觉领域长期依赖传统图像分割方法&#xff0c;如基于边缘检测的Canny算法、区域生长法以及分水岭算法等。这些方法在特定场景下表现稳定&#xff0c;但普遍存在泛化能力弱、对光照和背景敏感…

作者头像 李华
网站建设 2026/4/23 12:37:43

AI图像处理实战:集成Rembg的证件照生成系统部署教程

AI图像处理实战&#xff1a;集成Rembg的证件照生成系统部署教程 1. 引言 1.1 业务场景描述 在日常办公、求职申请、证件办理等场景中&#xff0c;标准证件照是不可或缺的基础材料。传统方式依赖照相馆拍摄或使用Photoshop手动处理&#xff0c;存在成本高、效率低、隐私泄露风…

作者头像 李华
网站建设 2026/4/23 13:02:41

Supertonic技术揭秘:如何实现167倍实时速度的TTS

Supertonic技术揭秘&#xff1a;如何实现167倍实时速度的TTS 1. 引言&#xff1a;设备端TTS的性能革命 随着边缘计算和本地化AI应用的兴起&#xff0c;文本转语音&#xff08;Text-to-Speech, TTS&#xff09;系统正从云端向设备端迁移。用户对低延迟、高隐私性和离线可用性的…

作者头像 李华
网站建设 2026/4/18 1:54:18

知北知雁发音人切换技巧:Sambert情感控制详细步骤解析

知北知雁发音人切换技巧&#xff1a;Sambert情感控制详细步骤解析 1. 引言 1.1 Sambert 多情感中文语音合成——开箱即用版 随着AI语音技术的快速发展&#xff0c;高质量、多情感、可定制化的文本转语音&#xff08;TTS&#xff09;系统已成为智能客服、有声读物、虚拟主播等…

作者头像 李华
网站建设 2026/4/23 12:38:53

PDF-Extract-Kit表格识别精度提升秘籍

PDF-Extract-Kit表格识别精度提升秘籍 1. 背景与挑战&#xff1a;PDF文档结构化提取的痛点 在企业级文档处理、金融报表分析、科研数据整理等场景中&#xff0c;PDF作为最常见的文档格式之一&#xff0c;承载了大量非结构化信息。其中&#xff0c;表格数据因其复杂的布局、跨…

作者头像 李华
网站建设 2026/4/3 9:27:20

通义千问2.5-7B-Instruct如何提速?Tensor Parallel实战优化

通义千问2.5-7B-Instruct如何提速&#xff1f;Tensor Parallel实战优化 1. 背景与挑战&#xff1a;为何需要对Qwen2.5-7B-Instruct进行推理加速 1.1 模型能力与部署瓶颈的矛盾 通义千问 2.5-7B-Instruct 是阿里于 2024 年 9 月发布的 70 亿参数指令微调模型&#xff0c;定位…

作者头像 李华