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

Node.js上传至AWS S3的文件无法打开,Content-Type元数据异常问题求助

Node.js上传至AWS S3的文件无法打开,Content-Type元数据异常问题求助

大家好,我最近在开发一个Node.js API,用来把文件上传到AWS S3。我跟着网上的教程写了代码,文件(图片、Word、PDF)确实能成功上传到S3,但下载后就是打不开,或者打开时报错。后来我发现一个关键点:通过我的Web应用上传的文件,元数据里的Content-Type是application/octet-stream,但手动上传到S3的文件,Content-Type是对应的类型比如image/jpeg。我是不是哪里漏了什么?

下面是我的Node.js API代码:

app.post("/uploadfile", upload.single("file"), async (req, res) => {
  try {
    console.log(req.file);
    var file = req.file;
    const fileStream = fs.createReadStream(file.path);
    const params = {
      Bucket: bucketName,
      Key: file.originalname,
      Body: fileStream,
    };
    const result = await s3.upload(params).promise();
    return res.status(200).send({
      ok: true,
      message: "File upload successful",
      location: result.Location,
    });
  } catch (err) {
    res.status(500).send({
      ok: false,
      message: "Failed to upload file. Error: " + err.message,
    });
  }
});

还有前端代码:

const [file, setFile] = useState();

const onSubmit = async (data) => {
  console.log(data);
  const fileData = new FormData();
  fileData.append("file", file);
  const uploadResult = await uploadFile(fileData);
  console.log(uploadResult);
}

const uploadFile = async (data) => {
  const requestOptions = {
    method: "POST",
    body: data,
  };
  const endPoint = DEV_API_URL + "uploadfile";
  const response = await fetch(endPoint, requestOptions);
  const responseJson = await response.json();
  return responseJson;
};

备注:内容来源于stack exchange,提问作者Joy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 08:27:44