You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React.js中Minio文件上传后无法打开问题求助

问题根源

你用readAsDataURL获取的结果是完整的Data URL(格式为data:[<mediatype>];base64,<data>),直接拿这个字符串做Buffer.from的base64解码,会把前缀部分也当成有效数据处理,导致上传到Minio的文件包含无效内容,自然无法正常打开。

解决方法
  1. 从Data URL里剥离前缀,只保留纯base64编码的内容
  2. 用纯base64字符串生成Buffer
  3. 上传时指定文件的Content-Type,让Minio正确识别文件类型
修正后的代码
const [fileData, setFileData] = useState(); // 用户选择的文件存储在fileData状态中

const uploadObj = () => {
  const fileBuffer = new FileReader();
  fileBuffer.readAsDataURL(fileData);

  fileBuffer.onload = function () {
    // 提取Data URL中的纯base64部分
    const base64Raw = fileBuffer.result.split(',')[1];
    // 生成正确的Buffer
    const buf = Buffer.from(base64Raw, "base64");
    // 获取原文件的MIME类型
    const fileType = fileData.type;

    // 上传时指定Content-Type,同时保留原文件名
    mc.putObject("BucketName", fileData.name, buf, fileType, function (err, etag) {
      console.log(err, etag);
    });
  };

  fileBuffer.onerror = function (error) {
    console.log("Error: ", error);
  };
}

额外提示:如果不需要保留原文件名,把fileData.name替换成你想要的自定义文件名即可。

内容的提问来源于stack exchange,提问作者Gibson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 06:50:26