uni-app uploadFile 上传_doc文件失败

发布于 1周前 作者 h691938207 来自 Uni-App

uni-app uploadFile 上传_doc文件失败

示例代码:

'''
var filesPaths=[];
for(var k in files){
filesPaths.push(files[k].uri);
}
console.log(JSON.stringify(filesPaths))
const uploadTask = uni.uploadFile({
url: uni.getStorageSync("setUserData").fwq+'/api/api_apiPmIssue_addAjax.action?userName='+this.userName+'&token='+this.token, //仅为示例,非真实的接口地址
filePath: filesPaths,
name: 'files',
formData: parm,
success: (uploadFileRes) => {
console.log(uploadFileRes.data)
var result=JSON.parse(uploadFileRes.data);
console.log(JSON.stringify(result));
if(result.msg=="success"){
uni.hideLoading()
uni.showLoading({
title: '同步中,当前共'+total+'条,已同步'+(successNum++)+''
});
}
}
});
uploadTask.onProgressUpdate((res) => {
console.log('上传进度' + res.progress);
});
'''

操作步骤:

使用uploadFile方法 参数选择使用filePathname filePath_doc中的路径

预期结果:

能正常上传

实际结果:

报错

bug描述:

业务需求在网络环境差的时候,先将用户数据保存到本地,联网后上传. 使用uni.saveFile将文件保存到_doc目录 使用uni.uploadFile 将文件路径传入运行报错,


4 回复

不好意思 没有仔细看文档 ,filePath应该是个字符串. 那么我的问题可能变成了, 如何根据本地文件路径数组得到uploadFile可以使用的files数组


你打印一下 uploadTask 可能是 undefined ,如果是 可以 if(uploadTask){
uploadTask.onProgressUpdate()
}

已经解决了 api没有问题 自己页面的其他问题导致的

在使用 uni-appuploadFile 方法上传 .doc 文件时,如果遇到上传失败的情况,可能的原因有很多。以下是一些常见的问题和解决方法:

1. 文件大小限制

  • 服务器可能对上传文件的大小有限制。如果 .doc 文件过大,可能会导致上传失败。
  • 解决方法:检查服务器端的文件大小限制,并确保文件大小在允许范围内。如果需要,可以在 uni.uploadFileformData 中传递文件大小信息。

2. 文件类型限制

  • 服务器可能只允许特定类型的文件上传,如果 .doc 文件类型不在允许的列表中,上传会失败。
  • 解决方法:检查服务器端的文件类型限制,并确保 .doc 文件类型被允许。如果需要,可以在 uni.uploadFileformData 中传递文件类型信息。

3. 网络问题

  • 网络不稳定或中断可能导致上传失败。
  • 解决方法:检查网络连接,确保网络稳定。可以尝试重新上传。

4. 服务器配置问题

  • 服务器可能配置不当,导致无法正确处理 .doc 文件的上传请求。
  • 解决方法:检查服务器配置,确保服务器能够正确处理 .doc 文件的上传请求。

5. uni.uploadFile 参数配置问题

  • uni.uploadFile 的参数配置可能不正确,导致上传失败。
  • 解决方法:检查 uni.uploadFile 的参数配置,确保 urlfilePathname 等参数正确。

6. 文件路径问题

  • 如果 filePath 参数指定的文件路径不正确,上传会失败。
  • 解决方法:确保 filePath 参数指定的文件路径正确,并且文件存在。

7. 跨域问题

  • 如果上传接口存在跨域问题,可能会导致上传失败。
  • 解决方法:确保服务器端配置了正确的跨域策略,或者使用代理服务器解决跨域问题。

8. 服务器返回错误

  • 服务器在处理上传请求时可能会返回错误信息。
  • 解决方法:检查服务器返回的错误信息,根据错误信息进行相应的处理。

示例代码

以下是一个使用 uni.uploadFile 上传 .doc 文件的示例代码:

uni.chooseFile({
  count: 1,
  type: 'file',
  success: (res) => {
    const filePath = res.tempFilePaths[0];
    uni.uploadFile({
      url: 'https://example.com/upload', // 上传接口地址
      filePath: filePath,
      name: 'file', // 文件对应的 key
      formData: {
        'fileName': 'example.doc' // 其他表单数据
      },
      success: (uploadRes) => {
        console.log('上传成功', uploadRes.data);
      },
      fail: (err) => {
        console.error('上传失败', err);
      }
    });
  }
});
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!