URL-адрес загруженных файлов экспресс-мультимедиа

возможно глупый вопрос, но может быть кто-то здесь может мне помочь.

после загрузки файлов с помощью multer и экспресс, каким будет URL-адрес загруженных файлов на uploads/?

var storage = multer.diskStorage({
    destination: function (req, file, cb) {
        cb(null, 'uploads/')
    }
});

если это изображение, как я могу сослаться на него, например: http://localhost:3000/uploads/image.jpg?

я должен поместить загруженные файлы в общедоступный каталог?

спасибо


person Maor Ben    schedule 21.11.2015    source источник
comment
удалось решить эту проблему, добавив общедоступный экспресс-каталог с помощью «app.use», хотя я не уверен, что произойдет, если у меня будут совпадающие местоположения в обоих общедоступных каталогах. например, «public/img» и «uploads/img»   -  person Maor Ben    schedule 22.11.2015


Ответы (2)


Вот как я настраиваю Multer для expressjs. Сначала вам нужно перезаписать функцию переименования, если вы хотите сохранить исходное имя файла. Затем вам нужно переместить папку загрузки в общую папку.

// this uploads a single input[file] field called 'image'
var express = require('express'),
    multer = require('multer'),
    upload = multer({
        storage: multer.diskStorage({
            destination: 'public/images/uploads/',
            filename: function(req, file, cb) {
                // this overwrites the default multer renaming callback
                // and simply saves the file as it is
                cb(null, file.originalname)
            }
        })
    }),
    router = express.Router()

// add route
router.post('/uploadimage', upload.single('image'), function(req, res, next) {
    if (!req.file) return next(new Error('Select a file!'))
    // be careful here as the upload path has 'public' at the start 
    // which is the static mounted directory so doesn't show
    // here the path is build manually
    var imagePath = '/images/uploads/' + req.file.filename;
    res.end('<img src=" + imagePath + " />')        
})

кроме того, вы можете сохранить путь загрузки по умолчанию как /uploads и смонтировать его как статическую папку.

  // Mount uploads
  app.use(express.static(path.resolve('./uploads')));
person sidonaldson    schedule 22.07.2016

Сделайте статическим расположение diskstoarge в вашем случае, папка «загрузки» должна быть статической.

app.use(express.static('uploads'));

https://expressjs.com/en/starter/static-files.html

person Azeem Malik    schedule 22.07.2016