gpt4 book ai didi

javascript - multer.memoryStorage() 返回未定义的 req.file

转载 作者:行者123 更新时间:2023-11-30 19:27:07 26 4
gpt4 key购买 nike

我遇到一个问题,当使用 multer.memoryStorage 时,它返回未定义的 req.file。我可以成功使用 multer.diskStorage 并将我的文件保存在后端目录中。所以我知道我的前端正在按预期发送 formData

这是我负责发送 formData 的客户端代码:

  filesUpload = () => {
const data = new FormData();
const { files } = this.state;
const filesKey = Object.keys(files);

filesKey.forEach(key => {
data.append('file', files[key]);
});

const axiosConfig = {
headers: { 'Content-Type': 'multipart/form-data' }
};

axios.post('/v1/upload/files', axiosConfig, data, {}).then(res => {
console.log(res.statusText);
});
};

这是 Express 服务器端代码。当调用 '/v1/upload/files' 时会触发此 Controller :

//Multer Engine
const storage = multer.memoryStorage({
destination: (req, file, callback) => {
callback(null, '');
}
});

const multipleUpload = multer({ storage: storage }).array('file');

exports.s3Upload = (req, res) => {
multipleUpload(req, res, err => {
if (err instanceof multer.MulterError) {
console.log(err);
}
res.send(req.file) //req.file is always undefined
});
};

我很困惑,因为正如我上面所说,multer.diskStorage 对我来说很好用。我想我在使用 memoryStorage 时遗漏了一大块。我最终会将使用 multer 处理的文件发送到 AWS S3 存储桶,如果这在这里有所作为的话。

最佳答案

哇,这就是我要说的。

const axiosConfig = {
headers: { 'Content-Type': 'multipart/form-data' }
};

axios.post('/v1/upload/files', data, axiosConfig).then(res => {
console.log(res.statusText);
});

我有一个空对象被传递到原始代码中的 Axios 参数......

axios.post('/v1/upload/files', axiosConfig, data, {EMPTY}).then(res => {
console.log(res.statusText);
});

关于javascript - multer.memoryStorage() 返回未定义的 req.file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56793356/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com