Error: ENOENT: no such file or directory, open directory at Error (native) when upload image
Error: ENOENT: no such file or directory, open directory at Error (native) when upload image
我想使用 multer 上传图片,但是当我更改 app.js 时,我尝试了很多解决方案但对我没有用:(
var multer = require('multer');
var path = require('path');
var id_photo = uuidv1();
global.appRoot = __dirname;
var storage = multer.diskStorage({
destination: function(req, file, callback) {
callback(null, './uploads')
},
filename: function(req, file, callback) {
callback(null, file.fieldname + '-' + id_photo + path.extname(file.originalname));
}
})
var upload = multer({
storage: storage,
fileFilter: function(req, file, callback) {
var ext = path.extname(file.originalname)
if (ext !== '.png' && ext !== '.jpg' && ext !== '.gif' && ext !== '.jpeg') {
req.fileValidationError = "Only Image Allowed";
return callback(null, false, req.fileValidationError)
}
callback(null, true)
}
}).any();
app.use(upload);
connection.init();
至
var multer = require('multer');
var path = require('path');
global.appRoot = __dirname;
var storage = multer.diskStorage({
destination: function(req, file, callback) {
callback(null, './uploads')
},
filename: function(req, file, callback) {
var id_photo = new Date();
var dd = id_photo.getDate();
var mm = id_photo.getMonth() + 1; //January is 0!
var yyyy = id_photo.getFullYear();
var h = id_photo.getHours();
var i = id_photo.getMinutes();
var s = id_photo.getSeconds();
if (dd < 10) {
dd = '0' + dd
}
if (mm < 10) {
mm = '0' + mm
}
if (h < 10) {
h = '0' + h
}
if (i < 10) {
i = '0' + i
}
if (s < 10) {
s = '0' + s
}
id_photo = mm + '-' + dd + '-' + yyyy + '-' + h + ':' + i + ':' + s;
callback(null, id_photo + "*-" + file.originalname);
}
})
var upload = multer({
storage: storage,
}).any();
app.use(upload);
connection.init();
我收到这样的错误
错误:
ENOENT: no such file or directory, open
'C:\Nodejs\nodejs-wmc\uploads-11-2018-13:20:09*-8.jpg'
at Error (native)
虽然文件上传已经存在,但当我使用 app.js 时,第一个运行顺利。我的代码有什么问题?
请帮助我...谢谢:)
问题是您在路径中使用了保留字符。根据 https://msdn.microsoft.com/en-us/library/aa365247,以下符号在 Windows 上保留:
< (less than)
> (greater than)
: (colon)
" (double quote)
/ (forward slash)
\ (backslash)
| (vertical bar or pipe)
? (question mark)
* (asterisk)
如果您将路径格式更改为:
,应该可以正常工作
id_photo = mm + '-' + dd + '-' + yyyy + '-' + h + '_' + i + '_' + s;
callback(null, id_photo + "-" + file.originalname);
我想使用 multer 上传图片,但是当我更改 app.js 时,我尝试了很多解决方案但对我没有用:(
var multer = require('multer');
var path = require('path');
var id_photo = uuidv1();
global.appRoot = __dirname;
var storage = multer.diskStorage({
destination: function(req, file, callback) {
callback(null, './uploads')
},
filename: function(req, file, callback) {
callback(null, file.fieldname + '-' + id_photo + path.extname(file.originalname));
}
})
var upload = multer({
storage: storage,
fileFilter: function(req, file, callback) {
var ext = path.extname(file.originalname)
if (ext !== '.png' && ext !== '.jpg' && ext !== '.gif' && ext !== '.jpeg') {
req.fileValidationError = "Only Image Allowed";
return callback(null, false, req.fileValidationError)
}
callback(null, true)
}
}).any();
app.use(upload);
connection.init();
至
var multer = require('multer');
var path = require('path');
global.appRoot = __dirname;
var storage = multer.diskStorage({
destination: function(req, file, callback) {
callback(null, './uploads')
},
filename: function(req, file, callback) {
var id_photo = new Date();
var dd = id_photo.getDate();
var mm = id_photo.getMonth() + 1; //January is 0!
var yyyy = id_photo.getFullYear();
var h = id_photo.getHours();
var i = id_photo.getMinutes();
var s = id_photo.getSeconds();
if (dd < 10) {
dd = '0' + dd
}
if (mm < 10) {
mm = '0' + mm
}
if (h < 10) {
h = '0' + h
}
if (i < 10) {
i = '0' + i
}
if (s < 10) {
s = '0' + s
}
id_photo = mm + '-' + dd + '-' + yyyy + '-' + h + ':' + i + ':' + s;
callback(null, id_photo + "*-" + file.originalname);
}
})
var upload = multer({
storage: storage,
}).any();
app.use(upload);
connection.init();
我收到这样的错误
错误:
ENOENT: no such file or directory, open 'C:\Nodejs\nodejs-wmc\uploads-11-2018-13:20:09*-8.jpg' at Error (native)
虽然文件上传已经存在,但当我使用 app.js 时,第一个运行顺利。我的代码有什么问题?
请帮助我...谢谢:)
问题是您在路径中使用了保留字符。根据 https://msdn.microsoft.com/en-us/library/aa365247,以下符号在 Windows 上保留:
< (less than)
> (greater than)
: (colon)
" (double quote)
/ (forward slash)
\ (backslash)
| (vertical bar or pipe)
? (question mark)
* (asterisk)
如果您将路径格式更改为:
,应该可以正常工作id_photo = mm + '-' + dd + '-' + yyyy + '-' + h + '_' + i + '_' + s;
callback(null, id_photo + "-" + file.originalname);