nodejs multer восстанавливает сохраненные изображения на стороне клиента - PullRequest
0 голосов
/ 25 сентября 2019

Я создал хранилище файлов в приложении nodejs для хранения изображений в папке загрузки.который работает нормально, но теперь я хочу показать эти изображения, которые я прочитал некоторые другие сообщения, но я все еще совершенно не уверен.

Вот мой код:

 var Storage = multer.diskStorage({
 destination: function(req, file, callback) {
 var pathname = file.originalname;
 var path = pathname[0].replace('_','/');
 cb(null,'./uploads'+pathname);
 },
 filename: function(req, file, callback) {
 var pathname = file.originalname;
 var filename = pathname[1];
 if(pathname!=undefined)
 callback(null, pathname);
 }
 });
 var upload = multer({ storage: Storage }).single('file');

router.post('/upload', multer({dest:'./uploads/'}).single('file'), function(req,res)
 {
 return res.status(201).json({result:req.file});
 });

из журнала консоли я получаю

{ fieldname: 'file',
  originalname: '1569402978357.jpg',
  encoding: '7bit',
  mimetype: 'image/jpeg',
  destination: './uploads/',
  filename: 'ada9282345565e8a77c6adc4b2d15836',
  path: 'uploads\\ada9282345565e8a77c6adc4b2d15836',
  size: 170272 }

и при загрузке он сохраняется как имя файла

Моя проблема в том, как я могу отобразить это изображение обратно?Должен ли он вызываться из сохраненного имени файла или я должен изменить хранилище, чтобы сохранить его как исходное имя файла с расширением файла?

Ответы [ 2 ]

1 голос
/ 25 сентября 2019

В зависимости от вашего варианта использования, если вы хотите хранить файлы под другим именем, вам нужен способ найти файлы на более позднем этапе.Это может быть достигнуто путем сохранения имен в базе данных или , вы даже можете использовать какие-то формулы, чтобы узнать имя сохраненного файла из исходного файла.Например:

name_of_stored_file =  md5(name_of_original_file)

Поскольку файлы (изображения) теперь хранятся в вашем бэкэнде, вы можете предоставить API для отправки файлов клиенту по запросу.Опять же, это полностью зависит от варианта использования, но вот простой пример использования метода Expressjs res.sendFile:

app.get('/file/:fileName', function (req, res) {
    const filePath = // find out the filePath based on given fileName
    res.sendFile(filepath);
});

http://expressjs.com/en/api.html#res.sendFile

1 голос
/ 25 сентября 2019

Выбор сохранения исходного имени файла отличается от варианта использования к варианту использования.В любом случае вам придется хранить имя где-то на постоянном носителе (например, в базе данных), чтобы при его отображении вы могли заглянуть в свой каталог закачек и отправить файл обратно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...