当我将图像上传到服务器 nodejs 时找不到文件(使用 multer)
Don't find file when i upload image to server nodejs (use multer)
当我通过 multer 上传图片时,我的服务器 nodejs 出现了一些问题。
https://github.com/expressjs/multer
当我转到文件夹上传时,我没有看到我的文件已上传!
我的代码:
app.use(multer(
{
dest: path.join(__dirname, 'uploads'),
inMemory: true,
includeEmptyFields: true,
onFileUploadStart: function (file, req, res) {
console.log('onFileUploadStart');
console.log(file);
},
onFileUploadData: function (file, data, req, res) {
console.log('onFileUploadData');
console.log(file);
},
onFileUploadComplete: function (file, req, res) {
console.log('onFileUploadComplete');
console.log(file);
},
limits: {
fieldNameSize: 999999999,
fieldSize: 999999999
},
onParseStart: function() {
console.log('Starting to parse request!');
},
onParseEnd: function(req, next) {
console.log('Done parsing!');
next();
},
onError: function(e, next) {
if (e) {
console.log(e.stack);
}
next();
}
}));
和路由:(我从客户端收到文件)
router.post('/newapi/addimages',function(req,res){
try{
// fileName = file.name, file name passed by client. Not used here. We use the name auto-generated by Node
var file = req.files.file;
var filePath = file.path;
var lastIndex = filePath.lastIndexOf("/");
var tmpFileName = filePath.substr(lastIndex + 1);
var image = req.body;
image.fileName = tmpFileName;
return res.send({ok:'heyyou'});
}
catch(err){
console.log(err);
return res.send({ok:'heyyou'});
}
});
我的结果:
这是因为您将 inMemory
选项设置为 true
。此选项使图像保留在进程内存中,而不是通过管道将其传输到文件系统,并且可以通过 req.files.file.buffer
.
访问
将 inMemory
更改为 false
就可以了。
您 不必 设置每个选项,对于您的应用程序,您可以使用大多数默认值。
app.use(multer({ dest: path.join(__dirname, 'uploads') }));
当我通过 multer 上传图片时,我的服务器 nodejs 出现了一些问题。 https://github.com/expressjs/multer 当我转到文件夹上传时,我没有看到我的文件已上传!
我的代码:
app.use(multer(
{
dest: path.join(__dirname, 'uploads'),
inMemory: true,
includeEmptyFields: true,
onFileUploadStart: function (file, req, res) {
console.log('onFileUploadStart');
console.log(file);
},
onFileUploadData: function (file, data, req, res) {
console.log('onFileUploadData');
console.log(file);
},
onFileUploadComplete: function (file, req, res) {
console.log('onFileUploadComplete');
console.log(file);
},
limits: {
fieldNameSize: 999999999,
fieldSize: 999999999
},
onParseStart: function() {
console.log('Starting to parse request!');
},
onParseEnd: function(req, next) {
console.log('Done parsing!');
next();
},
onError: function(e, next) {
if (e) {
console.log(e.stack);
}
next();
}
}));
和路由:(我从客户端收到文件)
router.post('/newapi/addimages',function(req,res){
try{
// fileName = file.name, file name passed by client. Not used here. We use the name auto-generated by Node
var file = req.files.file;
var filePath = file.path;
var lastIndex = filePath.lastIndexOf("/");
var tmpFileName = filePath.substr(lastIndex + 1);
var image = req.body;
image.fileName = tmpFileName;
return res.send({ok:'heyyou'});
}
catch(err){
console.log(err);
return res.send({ok:'heyyou'});
}
});
我的结果:
这是因为您将 inMemory
选项设置为 true
。此选项使图像保留在进程内存中,而不是通过管道将其传输到文件系统,并且可以通过 req.files.file.buffer
.
将 inMemory
更改为 false
就可以了。
您 不必 设置每个选项,对于您的应用程序,您可以使用大多数默认值。
app.use(multer({ dest: path.join(__dirname, 'uploads') }));