Перепробовал множество доступных в Интернете учебных пособий, но я все еще не могу заставить его работать. Я использую модуль multer в NodeJS и ng-file-upload в AngularJS. Сделал два хелпера с настройками мультера(потому что у меня два сценария и обе загрузки должны идти в разные папки). Бэкенд-файлы находятся в папке APP/APP_BACK/, поэтому в пути назначения я возвращаюсь на одну папку и ввожу APP_FRONT/images/header. Вот один вспомогательный фрагмент (/helpers/uploadHeader.js):
var storage = multer.diskStorage({
destination: function (req, file, callback) {
callback(null, '../APP_FRONT/images/header/');
},
filename: function (req, file, callback) {
var ext = filename.slice((filename.lastIndexOf(".") - 1 >>> 0) + 2);
callback(null, file.fieldname + '-' + '.' + ext);
}
});
var upload = multer(
{storage: storage}
);
var helper = {
upload: upload
};
module.exports = helper;
Вот файл роутера:
var headerHelper= require('../helpers/uploadHeader');
router.post('/header', headerHelper.upload.single('header'), function(req, res, next) {
headerHelper.upload(req, res, function(err){
if(err){
res.status(400).send(err);
console.log(err);
return;
}
res.status(200).send({ code:200, message:'Header upload successful!' });
});
});
«заголовок» будет именем формы ввода или значением ключа в Postman.
В Angular я внедрил модуль «ngFileUpload» в приложение и внедрил службу «Загрузить» в нужный контроллер и использовал его внутри функции uploadHeader(), которая привязана к кнопке внутри формы на стороне клиента:
$scope.uploadHeader = function (file) {
Upload.upload({
url: 'http://localhost:3003/upload/header',
method: 'POST',
file: file
}).then(function (response) {
console.log('Success ' + response.config.data.file.name + 'uploaded. Response: ' + response.data);
}, function (error) {
console.log('Error status: ' + error.status);
}, function (evt) {
var progressPercentage = parseInt(100.0 * evt.loaded / evt.total);
console.log('progress: ' + progressPercentage + '% ' + evt.config.data.file.name);
});
Я пробовал с Почтальоном:
И получить эту ошибку:
"Ошибка: ENOENT: нет такого файла или каталога, откройте 'c:\Users\Имя пользователя\Desktop\APP\APP_FRONT\images\header\header.jpg'"
Когда я пытаюсь со стороны клиента, я получаю следующие ошибки:
"Ошибка: неожиданное поле
в makeError" и "TypeError: dbg is undefined"
Я уже консультировался с Google, пробовал некоторые учебники, но застрял на этом.
html
код? Я считаю, что в этом и заключается ошибка. Вы уверены, что значение атрибутаname
равноheader
? - person Shimon Brandsdorfer   schedule 06.01.2017