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
相关产品推荐
相关产品推荐

