Загружать файлы на 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.

0 ответов

Другие вопросы по тегам