如何将 Multer 中间件中的文件重命名为我在请求中发送的数据
How to rename file in Multer middleware to data I am sending in request
在前端,我为每个订单生成唯一 ID。想法是重命名用户上传到 orderId 的文件。
这是我对服务器的请求:
const handleFileUpload = e => {
const formData = new FormData()
formData.append("pdf-file", e.target.files[0])
formData.append("orderId", orderId)
axios.post("http://localhost:8000/upload", formData, { headers: { "Content-Type": "multipart/form-data" } })
.then(res => {
console.log(res)
})
.catch(error => {
console.log(error)
})
}
这是服务器代码:
const storage = multer.diskStorage({
destination: (req, file, cb) => {
cb(null, "./uploads")
},
filename: (req, file, cb) => {
console.log(req.body)
cb(null, `${file.fieldname}-${req.body.orderId}`)
}
})
const uploadStorage = multer({storage: storage})
app.post("/upload", uploadStorage.single("pdf-file"), (req, res) => {
console.log(req.body)
return res.send("file upload")
})
console.log(req.body)
在 filename
中显示 空对象 ,在 app.post()
中显示 orderId。
外观如下:
[Object: null prototype] {} // inside filename
[Object: null prototype] { orderId: 'e923920b-fdf0-41ab-97dd-2fcf20b57250' } // inside app.post()
因此,据我在 filename 中的理解,这无法完成。如何处理这种情况?这可能吗?
我所要做的就是更改我附加到 formData 的顺序。
现在可以了:
formData.append("orderId", orderId)
formData.append("pdf-file", e.target.files[0])
在前端,我为每个订单生成唯一 ID。想法是重命名用户上传到 orderId 的文件。 这是我对服务器的请求:
const handleFileUpload = e => {
const formData = new FormData()
formData.append("pdf-file", e.target.files[0])
formData.append("orderId", orderId)
axios.post("http://localhost:8000/upload", formData, { headers: { "Content-Type": "multipart/form-data" } })
.then(res => {
console.log(res)
})
.catch(error => {
console.log(error)
})
}
这是服务器代码:
const storage = multer.diskStorage({
destination: (req, file, cb) => {
cb(null, "./uploads")
},
filename: (req, file, cb) => {
console.log(req.body)
cb(null, `${file.fieldname}-${req.body.orderId}`)
}
})
const uploadStorage = multer({storage: storage})
app.post("/upload", uploadStorage.single("pdf-file"), (req, res) => {
console.log(req.body)
return res.send("file upload")
})
console.log(req.body)
在 filename
中显示 空对象 ,在 app.post()
中显示 orderId。
外观如下:
[Object: null prototype] {} // inside filename
[Object: null prototype] { orderId: 'e923920b-fdf0-41ab-97dd-2fcf20b57250' } // inside app.post()
因此,据我在 filename 中的理解,这无法完成。如何处理这种情况?这可能吗?
我所要做的就是更改我附加到 formData 的顺序。
现在可以了:
formData.append("orderId", orderId)
formData.append("pdf-file", e.target.files[0])