uni-app 使用 uni.uploadFile 上传时如果是 https 地址则无法完成上传
uni-app 使用 uni.uploadFile 上传时如果是 https 地址则无法完成上传
| 项目属性 | 值 |
|---|---|
| 产品分类 | uniapp/App |
| PC开发环境 | Windows |
| PC开发环境版本 | win10 |
| HBuilderX类型 | 正式 |
| HBuilderX版本 | 3.2.3 |
| 手机系统 | Android |
| 手机系统版本 | Android 10 |
| 手机厂商 | 小米 |
| 手机机型 | xiaomi8 |
| 页面类型 | vue |
| 打包方式 | 云端 |
| 项目创建方式 | HBuilderX |
示例代码:
for(let i = 0;i < tempFilePaths.length; i++) {
const uploadTask = uni.uploadFile({
// url: 'http://192.168.1.242:8787/business/file',
url: 'https://pay.hebqyxx.com/dev-api/business/file',
filePath: tempFilePaths[i],
name: 'file',
header: {
Authorization: t
},
formData: {'illegalTime':this.formData.illegalTime,'illegalAddress':this.formData.illegalAddress,'fileName':this.fileName[i],'businessId':this.businessId,'businessName':this.fileForm.businessName,'fileType':this.fileForm.fileType},
fail: (error) => {
console.log('error', error)
},
complete: () => {
if (tempFilePaths[i].includes('Camera')) {
plus.io.resolveLocalFileSystemURL(tempFilePaths[i], function(entry) {
entry.remove(function(entry) {
console.log("文件删除成功==" + tempFilePaths[i]);
}, function(e) {
console.log("文件删除失败=" + tempFilePaths[i]);
});
});
}
}
});
操作步骤:
无需
预期结果:
可以上传至https服务器
实际结果:
上传https服务器无反应
bug描述:
同样的代码使用`http://*`接口可以上传
使用`https://*`app端上传没有任何反应,感觉没有执行上传一样
翻阅了一下社区问题,找到了一个相似的https://ask.dcloud.net.cn/question/62499。
自己测了两天了,发现如果用最新v3.2.3的HBuilder调试就会发生问题,如果回退到v3.1.12则没有问题。
但是无论哪个版本云打包都会出现问题。
望官方人员尽快解决,真的不胜感谢。
更多关于uni-app 使用 uni.uploadFile 上传时如果是 https 地址则无法完成上传的实战教程也可以访问 https://www.itying.com/category-93-b0.html
我看看
更多关于uni-app 使用 uni.uploadFile 上传时如果是 https 地址则无法完成上传的实战教程也可以访问 https://www.itying.com/category-93-b0.html
你的服务器的ssl证书 是不是自签名的
不是,是在阿里云买的
回复 北极熊天: 你发一个可以复现问题的demo 我在我这里试一下
回复 DCloud_Android_DQQ: 我知道原因了,是手机拍摄的图片没有经过压缩,太大导致的上传时间过长,就没反应了。自己手动压缩了一下没有问题了
根据你的描述,这是一个典型的 HTTPS 上传问题。从你提供的信息来看,问题可能出在以下几个方面:
-
SSL证书问题:HTTPS 服务器可能使用了不被 Android 系统信任的 SSL 证书(如自签名证书)。在 Android 10 上,系统对证书验证更加严格。
-
网络配置问题:HTTPS 可能需要特定的网络配置,特别是在 App 中。
解决方案:
-
检查服务器 SSL 证书:
- 确保服务器使用的是有效的、受信任的 SSL 证书
- 可以在浏览器中访问
https://pay.hebqyxx.com/dev-api/business/file,查看证书是否有效
-
配置 App 允许非受信证书(仅限开发测试): 在
manifest.json的 App 模块配置中添加:"ssl" : { "secure" : false }注意:正式上线时不要使用此配置。
-
检查网络权限配置: 确保
manifest.json中已正确配置网络权限。 -
使用完整代码调试: 在
fail回调中添加更详细的错误信息:fail: (error) => { console.log('上传失败:', error); console.log('错误码:', error.errCode); console.log('错误信息:', error.errMsg); }

