Загружать файлы на NodeJs - нет такого файла или каталога
Я пытаюсь получить файлы для загрузки с помощью пакета ng2-file-upload. Я дошел до того, что кнопка "загрузить все" отправляет выбранные файлы в NodeJ.
Вызов API был установлен на "/ upload"
const uri = '/upload';
Он используется в FileUploader:
public uploader:FileUploader = new FileUploader({
url: uri
});
Код становится там, а затем он будет пытаться фактически загрузить файл (ы)
app.post('/upload', function(req, res, next) {
console.log('Upload was called');
upload(req, res, function(err) {
if (err) {
console.log('ERROR', err);
return res.status(501).json({error:err});
}
console.log('REQ file: ', req.file);
//do all database record saving activity
return res.json({originalname: req.file.originalname, uploadname: req.file.filename});
});
});
В журналах я вижу "Загружен был вызван"- как записано в коде выше - и он идет к следующей функции загрузки (связанной с multer):
var store = multer.diskStorage({
destination: function(req, file, cb) {
console.log('DIR NAMES:', __dirname, process.cwd() );
let uploadPath = path.join(process.cwd(), 'uploads' );
console.log('DIR NAME:', uploadPath);
cb(null, uploadPath);
},
filename: function(req, file, cb) {
cb(null, Date.now()+'.'+file.originalname);
}
});
var upload = multer({storage:store}).single('file');
(Рядом с process.cwd() я также попробовал __dirname). Здесь все идет не так. В логах я получаю:
ERROR { Error: ENOENT: no such file or directory, open '/app/uploads/1518809575508.banner-13.jpg'
at Error (native)
errno: -2,
code: 'ENOENT',
syscall: 'open',
path: '/app/uploads/1518809575508.banner-13.jpg',
storageErrors: [] }
Я также попытался иметь относительный путь для моего uploadPath:
let uploadPath = path.join('..', 'uploads' );
В этом случае я получаю следующее в журналах:
Upload was called
DIR NAME: /app/src
DIR NAME: ../uploads
ERROR { Error: ENOENT: no such file or directory, open '../uploads/1518811935738.banner-14.jpg'
at Error (native)
errno: -2,
code: 'ENOENT',
syscall: 'open',
path: '../uploads/1518811935738.banner-14.jpg',
storageErrors: [] }
Я попытался добавить каталог "uploads" на нескольких уровнях, чтобы увидеть, будет ли относительный путь там, где я его не ожидаю, но всегда получаю одну и ту же ошибку.
В данный момент я работаю в среде виртуальной машины Linux, но в конечном итоге она будет развернута в Azure. Я упоминаю об этом, так как это не будет возможностью загрузки в (жестко запрограммированный) каталог "/tmp/uploads", так как он не существует на сервере Azure Microsoft.