uniapp视频转base64时出现文件错误是怎么回事?

在uniapp中将视频文件转换为base64时遇到文件错误,请问是什么原因?具体表现为选择视频文件后转换失败,控制台报错提示文件读取异常。代码中使用的是uni.chooseVideo选取视频后,通过FileReader进行base64转换。已知测试过MP4和MOV格式都会报错,但图片文件转换正常。请问该如何解决?需要检查哪些关键点?

2 回复

可能是文件路径错误、格式不支持或文件过大。检查文件是否存在,确保格式为mp4等常见格式,并尝试压缩文件大小。


在UniApp中将视频文件转换为Base64时出现“文件错误”,通常由以下原因导致:

  1. 文件路径问题

    • 使用临时路径而非本地路径,需通过 uni.chooseVideo 获取正确路径。
    • 示例代码:
      uni.chooseVideo({
        success: (res) => {
          const tempFilePath = res.tempFilePath; // 使用此路径
          this.videoToBase64(tempFilePath);
        }
      });
      
  2. 文件大小限制

    • Base64转换仅适用于小文件(建议<10MB)。大文件可能导致内存溢出或超时错误。
    • 解决方案:压缩视频或使用分片上传。
  3. 异步处理未完成

    • 文件读取需通过 uni.getFileSystemManager().readFile 异步处理,确保在回调中操作数据。
    • 示例代码:
      videoToBase64(filePath) {
        const fs = uni.getFileSystemManager();
        fs.readFile({
          filePath: filePath,
          encoding: 'base64',
          success: (res) => {
            console.log('Base64:', res.data);
          },
          fail: (err) => {
            console.error('文件读取失败:', err);
          }
        });
      }
      
  4. 平台兼容性

    • 部分API在H5或小程序中限制文件操作,需检查官方文档。

建议步骤

  1. 确认文件路径正确且为本地路径。
  2. 检查文件大小,过大时需压缩。
  3. 使用异步API并处理回调错误。
  4. 在真机测试(部分功能模拟器不支持)。

通过以上调整可解决常见问题。若仍报错,请提供具体错误日志进一步分析。

回到顶部