2016-01-25 2 views
0

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

Это мой код:

server.js

app.use('/', require('./routes')); 

маршруты/index.js

var teacher = require('./teachers.js'); 

router.post('/upload', teacher.uploadAvatar); 

маршруты/teachers.js

var multer  = require('multer'); 
var upload  = multer({ dest: 'uploads/teacher/' }).single('avatar'); 

uploadAvatar: function(req, res) { 
    upload(req, res, function(err) { 
     console.log(req.body); 
     console.log(req.file); 

     if(err) { 
      return res.end("Error uploading file."); 
     } 
     res.end("File is uploaded"); 
    }); 
} 

Доступ по нижеследующему URL-адресу localhost:8000/uploads/teacher/uploaded_file_name.png дает ошибку Error: Not Found.

+0

whats your current dir structure? похоже, что путь 'uploads/teacher' не существует или отсутствует в корне вашего приложения – mani

+0

@mani, папка' uploads' находится в корневой папке моего приложения, и я вижу файлы, правильно загруженные в папку 'uploads/teacher'. – user4386126

+1

хорошо круто. похоже, что вам нужен «public» dir для статического содержимого сервера. Проверьте мой ответ ниже и дайте мне знать, если это поможет. – mani

ответ

2

Вам необходимо создать папку public для static активов (включая загрузки). Таким образом, ваша структура папок будет выглядеть как ./public/uploads/teacher/.

Затем необходимо обновить следующую строку в routes/teachers.js от:

var upload  = multer({ dest: 'uploads/teacher/' }).single('avatar'); 

к:

var upload  = multer({ dest: 'public/uploads/teacher/' }).single('avatar'); 

И добавьте следующую строку в server.js обслуживать статические ресурсы из public директории:

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

Вы должны en быть в состоянии получить доступ localhost:8000/uploads/teacher/uploaded_file_name.png

+0

Спасибо, мани, он работает! – user4386126

Смежные вопросы