uni-app uploadFile 上传_doc文件失败
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
方法 参数选择使用filePath
和name
filePath
放_doc
中的路径
预期结果:
能正常上传
实际结果:
报错
bug描述:
业务需求在网络环境差的时候,先将用户数据保存到本地,联网后上传.
使用uni.saveFile
将文件保存到_doc
目录
使用uni.uploadFile
将文件路径传入运行报错,
4 回复
不好意思 没有仔细看文档 ,filePath应该是个字符串.
那么我的问题可能变成了, 如何根据本地文件路径数组得到uploadFile可以使用的files数组
你打印一下 uploadTask 可能是 undefined ,如果是 可以
if(uploadTask){
uploadTask.onProgressUpdate()
}
已经解决了 api没有问题 自己页面的其他问题导致的
在使用 uni-app
的 uploadFile
方法上传 .doc
文件时,如果遇到上传失败的情况,可能的原因有很多。以下是一些常见的问题和解决方法:
1. 文件大小限制
- 服务器可能对上传文件的大小有限制。如果
.doc
文件过大,可能会导致上传失败。 - 解决方法:检查服务器端的文件大小限制,并确保文件大小在允许范围内。如果需要,可以在
uni.uploadFile
的formData
中传递文件大小信息。
2. 文件类型限制
- 服务器可能只允许特定类型的文件上传,如果
.doc
文件类型不在允许的列表中,上传会失败。 - 解决方法:检查服务器端的文件类型限制,并确保
.doc
文件类型被允许。如果需要,可以在uni.uploadFile
的formData
中传递文件类型信息。
3. 网络问题
- 网络不稳定或中断可能导致上传失败。
- 解决方法:检查网络连接,确保网络稳定。可以尝试重新上传。
4. 服务器配置问题
- 服务器可能配置不当,导致无法正确处理
.doc
文件的上传请求。 - 解决方法:检查服务器配置,确保服务器能够正确处理
.doc
文件的上传请求。
5. uni.uploadFile 参数配置问题
uni.uploadFile
的参数配置可能不正确,导致上传失败。- 解决方法:检查
uni.uploadFile
的参数配置,确保url
、filePath
、name
等参数正确。
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);
}
});
}
});