multer.memoryStorage() 返回 req.file 未定义
multer.memoryStorage() is returning req.file as undefined
我遇到一个问题,当使用 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'
时会触发此控制器:
//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);
});
我遇到一个问题,当使用 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'
时会触发此控制器:
//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);
});