Я использую Multer для загрузки изображений в Express 4. Однако все примеры показывают, что Multer определяется в файле Express как ПО промежуточного слоя. Я хотел бы фактически определить некоторые из поведений Multer в самой маршрутизации моего приложения. Это возможно? Конечный результат, который мне нужен, заключается в том, чтобы моя функция маршрута распознавала, когда загрузка завершена, прежде чем она отправит ответ сервера в браузер, чтобы изображение могло отображаться пользователю (сейчас я получаю только частичное изображение, потому что файл еще не закончил загрузку).
АКТУАЛЬНЫЙ, РАБОЧИЙ КОД
express.js
// Require Multer as module dependency.
var multer = require('multer');
// Using Multer for file uploads.
app.use(multer({
dest: './public/profile/img/',
limits: {
fieldNameSize: 50,
files: 1,
fields: 5,
fileSize: 1024 * 1024
},
rename: function(fieldname, filename) {
return filename;
},
onFileUploadStart: function(file) {
if(file.mimetype !== 'image/jpg' && file.mimetype !== 'image/jpeg' && file.mimetype !== 'image/png') {
return false;
}
}
}));
server_routes.js
app.route('/users/image').post(server_controller_file.imageUpload);
server_controller_file.js
exports.imageUpload = function(req, res) {
// Check to make sure req.files contains a file, mimetypes match, etc., then send appropriate server response.
};
В идеале мой файл server_controller_file.js должен содержать некоторые проверки, чтобы убедиться, что загрузка файла завершена, например. (примечание: это гипотетический/желательный, а не реальный рабочий код)...
var multer = require('multer');
exports.imageUpload = function(req, res) {
multer({
onFileUploadComplete: function(file) {
res.send();
}
});
}
Опять же, прямо сейчас асинхронный характер узла заставляет браузер думать, что загрузка завершена, как только он получает успешный ответ, поэтому, когда я обновляю URL-адрес для отображения изображения, оно отображается только частично. Спасибо за помощь!
file.path
в функции onFileUploadComplete? - person Ryan Yiada   schedule 06.01.2015multer
работает как промежуточное ПО, я думаю, что оно не будет работать в вашем server_controller_file. Поэтому вы не знаете, когда он завершил загрузку файла. См. этот пример: codeforgeek.com/2014/11/file-uploads. -использование-узла-js - person Ryan Yiada   schedule 06.01.2015