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

6 回复

我看看

更多关于uni-app 使用 uni.uploadFile 上传时如果是 https 地址则无法完成上传的实战教程也可以访问 https://www.itying.com/category-93-b0.html


你的服务器的ssl证书 是不是自签名的

不是,是在阿里云买的

回复 北极熊天: 你发一个可以复现问题的demo 我在我这里试一下

回复 DCloud_Android_DQQ: 我知道原因了,是手机拍摄的图片没有经过压缩,太大导致的上传时间过长,就没反应了。自己手动压缩了一下没有问题了

根据你的描述,这是一个典型的 HTTPS 上传问题。从你提供的信息来看,问题可能出在以下几个方面:

  1. SSL证书问题:HTTPS 服务器可能使用了不被 Android 系统信任的 SSL 证书(如自签名证书)。在 Android 10 上,系统对证书验证更加严格。

  2. 网络配置问题:HTTPS 可能需要特定的网络配置,特别是在 App 中。

解决方案

  1. 检查服务器 SSL 证书

    • 确保服务器使用的是有效的、受信任的 SSL 证书
    • 可以在浏览器中访问 https://pay.hebqyxx.com/dev-api/business/file,查看证书是否有效
  2. 配置 App 允许非受信证书(仅限开发测试): 在 manifest.json 的 App 模块配置中添加:

    "ssl" : {
        "secure" : false
    }
    

    注意:正式上线时不要使用此配置。

  3. 检查网络权限配置: 确保 manifest.json 中已正确配置网络权限。

  4. 使用完整代码调试: 在 fail 回调中添加更详细的错误信息:

    fail: (error) => {
        console.log('上传失败:', error);
        console.log('错误码:', error.errCode);
        console.log('错误信息:', error.errMsg);
    }
回到顶部