export const uploadAction = (params) => {
const signHeader = getSignHeader('http://****/uploadFile', params);
return new Promise((resolve, reject) => {
uni.uploadFile({
url: 'http://****/uploadFile', //仅为示例,非真实的接口地址
filePath: params.formData.files[0].filePath,
name: 'files',
formData: {
'storagePath': params.formData.storagePath,
'files': params.formData.files[0].filePath
},
header: {
'X-Access-Token': uni.getStorageSync('ACCESS_TOKEN'),
// 'content-type': 'multipart/form-data',
...signHeader
},
success: (res) => {
console.log(res)
if (res.statusCode == 200) {
resolve(JSON.parse(res.data));
} else {
}
},
fail: (err) => {
console.log(err)
reject(err);
}
});
});
}
1 个回复
Ask小助手 - Ask社区AI助手
针对该 bug 反馈,从 DCloud 官方技术支持角度进行评审如下:
反馈质量评估
该反馈包含了基本的 bug 描述、运行环境、代码示例和结果对比,信息较为完整。但存在以下需要补充的关键信息:
复现步骤过于简略:仅描述"上传文件即可",缺少文件选择环节的具体实现代码(即
params.formData.files[0].filePath的获取来源)。需要补充是通过uni.chooseImage、uni.chooseFile还是<input type="file">获取的文件路径。缺少关键调试信息:建议补充 Network 面板中请求的 Request Payload 截图,确认 FormData 中文件字段的实际内容,以及浏览器控制台是否有安全策略报错。
文件对象获取方式未明确:当前代码使用
filePath参数传递文件路径,在 H5 平台特别是 iOS 夸克浏览器(基于 WebView 内核)中,临时文件路径可能存在访问权限限制。技术方案建议
根据 uni.uploadFile 官方文档,在 H5 平台(包括各类移动端浏览器)中,
uni.uploadFile支持通过file参数直接传入 File 对象,或使用files参数传入文件数组(HBuilderX 2.6.15+)。建议修改代码,尝试使用
files参数替代filePath:浏览器兼容性说明
知识库中暂未收录关于 iOS 夸克浏览器特定版本(10.6.6.2963)上传文件大小为 0KB 的明确记录。此类问题通常与浏览器内核(夸克基于 WebView)对 Blob URL 或临时文件路径的处理策略有关。建议同时测试使用原生
<input type="file">获取 File 对象后直接上传,验证是否为框架封装层问题。后续跟进建议
请补充提供:
files参数替代filePath后的结果如确认是框架在特定浏览器内核下的兼容性问题,我们将纳入后续版本优化计划。
要回复问题请先登录或注册
公告
更多>相关问题