uni-app hbuildx升级为4.36后,uni.uploadFile上传视频到阿里云总是报400,且uni.chooseImage选择视频总是失败报错

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

uni-app hbuildx升级为4.36后,uni.uploadFile上传视频到阿里云总是报400,且uni.chooseImage选择视频总是失败报错

操作步骤:

  • 调用uni.chooseImage和uni.uploadFile

预期结果:

  • 选择视频正常,上传视频正常

实际结果:

  • 选择视频报{"errMsg":"chooseVideo:fail [File:-1100]在此服务器上找不到所请求的URL。,","errCode":-100,"code":-100},上传视频到阿里云报
<?xml version="1.0" encoding="UTF-8"?>
<Error>
    <Code>IncorrectNumberOfFilesInPOSTRequest</Code>
    <Message>POST requires exactly one file upload per request.</Message>
    <RequestId>675B8F6ED326A131330054DF</RequestId>
    <HostId>jwmqc.oss-cn-shenzhen.aliyuncs.com</HostId>
    <EC>0006-00000107</EC>
    <RecommendDoc>https://api.aliyun.com/troubleshoot?q=0006-00000107</RecommendDoc>
</Error>

bug描述:

hbuildx升级为4.36后,uni.uploadFile上传视频到阿里云总是报400,而且uni.chooseImage选择视频总是失败报错。 uni.uploadFile上传视频到阿里云报:

<?xml version="1.0" encoding="UTF-8"?>
<Error>
    <Code>IncorrectNumberOfFilesInPOSTRequest</Code>
    <Message>POST requires exactly one file upload per request.</Message>
    <RequestId>675B8F6ED326A131330054DF</RequestId>
    <HostId>jwmqc.oss-cn-shenzhen.aliyuncs.com</HostId>
    <EC>0006-00000107</EC>
    <RecommendDoc>https://api.aliyun.com/troubleshoot?q=0006-00000107</RecommendDoc>
</Error>

uni.chooseImage选择视频报错:{"errMsg":"chooseVideo:fail [File:-1100]在此服务器上找不到所请求的URL。,","errCode":-100,"code":-100}

相关链接:


2 回复

提供一下示例项目吧


针对您提到的uni-app在HBuilderX 4.36版本升级后遇到的问题,这里提供一些可能的代码案例和检查点来帮助您定位和解决问题。由于您提到的是上传视频到阿里云报400错误以及选择视频失败报错,我将分别给出相关的代码示例和检查思路。

1. uni.uploadFile 上传到阿里云报400错误

首先,400错误通常表示客户端请求有误,可能的原因包括请求参数错误、文件大小超限、OSS配置问题等。以下是一个基本的uni.uploadFile代码示例,请确保您的请求参数符合阿里云OSS的要求:

uni.chooseVideo({
    sourceType: ['album', 'camera'],
    maxDuration: 60,
    success: (res) => {
        const tempFilePath = res.tempFilePath;
        uni.uploadFile({
            url: 'https://your-oss-endpoint/your-bucket-name', // 阿里云OSS的上传地址
            filePath: tempFilePath,
            name: 'file', // 后端接收的文件字段名
            formData: {
                'key': 'your-object-key', // OSS中的文件名
                'OSSAccessKeyId': 'your-access-key-id',
                'Signature': 'your-signature',
                'Timestamp': 'your-timestamp',
                'policy': 'your-policy-base64-encoded',
                'success_action_status': '200'
            },
            success: (uploadRes) => {
                console.log('上传成功', uploadRes);
            },
            fail: (err) => {
                console.error('上传失败', err);
            }
        });
    },
    fail: (err) => {
        console.error('选择视频失败', err);
    }
});

检查点

  • 确保OSS的配置信息(如AccessKeyId, Signature, Timestamp, Policy)正确无误。
  • 检查文件大小是否超过OSS的限制。
  • 验证url是否正确,包括bucket名称和endpoint。

2. uni.chooseImage 选择视频失败报错

对于uni.chooseImage选择视频失败的问题,通常与权限设置或API调用参数有关。以下是一个基本的调用示例:

uni.chooseImage({
    count: 1,
    sourceType: ['album', 'camera'],
    extension: ['mp4'], // 指定视频格式
    success: (res) => {
        console.log('选择成功', res);
    },
    fail: (err) => {
        console.error('选择失败', err);
    }
});

检查点

  • 确保您的应用有访问相册和摄像头的权限。
  • 检查extension参数是否正确设置,如果您只想选择视频,应包含视频格式如mp4
  • 在真机上测试,模拟器可能不支持所有功能。

希望这些代码示例和检查点能帮助您解决问题。如果问题依旧,建议检查HBuilderX和uni-app的更新日志,看看是否有相关的已知问题或修复。

回到顶部