我具有此文件/文件夹结构:
+--public
| +--/productsImg/ //folder where i want to move images
+--routes
| +--products.js //the part that tells the images to move to /public/productImg/
为了移动特定的图像,我使用了 EXPRESS-FILEUPLOAD模块 。
我希望所有图像都在/ public / productsImg /文件夹中。请参阅上面的文件夹/文件结构。
在 products.js 中,我编写了以下代码:
var image = req.files; // in VIEW <input type="file" name="image"/>
var uploadPath = path.resolve(__dirname, '../public/productsImg/' + image.name);
//console.log(uploadPath) gives nothing ;
image.mv(uploadPath, (err) => {
if (err) {
return res.status(500).send(err);
}
res.send('File uploaded to ' + uploadPath);
});
我在nodemon控制台中遇到此错误:POST /products/store 500 9.733 ms - 16104
我认为我可能没有正确使用path.resolve
部分,并且我的uploadPath变量(文件)是未知的。
看过其他帖子,我不知道。有什么想法吗?
答案 0 :(得分:0)
也许可以帮助某人:解决方案
1),即使我在app.js中添加了var path = required('path');
,也已在product.js中添加了此内容。这很重要,否则它将无法正常工作。
2)创建了/ tmp /文件夹(项目的根目录),并将其添加到应用程序中
app.use(fileUpload({
useTempFiles : true,
tempFileDir : '/tmp/'
}));
3)将代码更改为
var { image } = req.files;
var uploadPath = path.resolve(__dirname, '../public/productsImg/', image.name); // important
console.log(uploadPath);
image.mv(uploadPath, (err) => {
if (err) {
return res.status(500).send(err);
}
res.send('File uploaded to ' + uploadPath);
//or whatever you want to do
});
答案 1 :(得分:0)
根据您的示例,您的文件对象应位于req.files.image中。 请参阅express-fileupload文档:
示例:
app.post('/upload', function(req, res) {
console.log(req.files.foo); // the uploaded file object
});
答案 2 :(得分:-1)
hie,在express-fileupload中,您可以通过name属性访问图片,因此您可以考虑更改
var image = req.files
到
var image = req.files.image
希望有帮助