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);