无法使用multer上传文件
not able to upload file using multer
我已经看到很多关于这个的答案并尝试了几乎所有答案,但 none 似乎对我有用。我可以将表单数据打印为 ascii 字符,但我没有按预期看到存储在 public/uploads 文件夹中的文件。我可以使用 API 在 React 应用程序上读取和呈现存储的文件,但无法上传。我没有收到任何错误,一切正常,但文件夹中没有上传任何文件。我正在尝试使用 multer 上传文件,下面是代码片段:
routes/uploads.js
var storage = multer.diskStorage({
dest : function (req, file, cb) {
cb(null, path.join(__dirname, 'public/uploads/'))
}
});
var upload = multer({storage:storage}) ;
router.post('/upload', upload.single('mypic'), function (req, res, next) {
console.log("inside upload files");
console.log(req.body); //prints non-readable characters as I am uploading image as expected
console.log(req.file); //says undefined
return res.status(204).end();
});
API.js(反应方):
export const uploadFile = (payload) => //payload is actually formdata
fetch(`${api}/files/upload`,
{
method: 'POST',
//headers: { 'Content-Type': 'application/json' },
headers: {
'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8'
},
body: payload
}
)
.then(res => {
console.log(res);
return res.status;
})
.catch(error => {
console.log(error);
return error;
});
尝试删除:
'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8'
尝试以下 IT 包含多个部分:
var storage = multer.diskStorage({
destination: function (req, file, cb) {
const extension = file.mimetype.split('/')[1];
//you can change destination runtime
if(file.fieldname == "covers[]")
{
cb(null, __dirname, '../public/uploads/cover');
return;
}
else
{
cb(null, '../public/uploads/image');
return;
}
},
filename: function (req, file, cb) {
//you can also change name
cb(null, filename)
}
});
var upload = multer({
storage: storage,
});
我已经看到很多关于这个的答案并尝试了几乎所有答案,但 none 似乎对我有用。我可以将表单数据打印为 ascii 字符,但我没有按预期看到存储在 public/uploads 文件夹中的文件。我可以使用 API 在 React 应用程序上读取和呈现存储的文件,但无法上传。我没有收到任何错误,一切正常,但文件夹中没有上传任何文件。我正在尝试使用 multer 上传文件,下面是代码片段:
routes/uploads.js
var storage = multer.diskStorage({
dest : function (req, file, cb) {
cb(null, path.join(__dirname, 'public/uploads/'))
}
});
var upload = multer({storage:storage}) ;
router.post('/upload', upload.single('mypic'), function (req, res, next) {
console.log("inside upload files");
console.log(req.body); //prints non-readable characters as I am uploading image as expected
console.log(req.file); //says undefined
return res.status(204).end();
});
API.js(反应方):
export const uploadFile = (payload) => //payload is actually formdata
fetch(`${api}/files/upload`,
{
method: 'POST',
//headers: { 'Content-Type': 'application/json' },
headers: {
'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8'
},
body: payload
}
)
.then(res => {
console.log(res);
return res.status;
})
.catch(error => {
console.log(error);
return error;
});
尝试删除:
'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8'
尝试以下 IT 包含多个部分:
var storage = multer.diskStorage({
destination: function (req, file, cb) {
const extension = file.mimetype.split('/')[1];
//you can change destination runtime
if(file.fieldname == "covers[]")
{
cb(null, __dirname, '../public/uploads/cover');
return;
}
else
{
cb(null, '../public/uploads/image');
return;
}
},
filename: function (req, file, cb) {
//you can also change name
cb(null, filename)
}
});
var upload = multer({
storage: storage,
});