2016-01-07 7 views
0

Я пытаюсь использовать ng-file-upload и multer для загрузки файлов. В настоящее время мой код выглядит так.Изображения, не загружаемые с помощью ng-file-upload и multer

HTML файл

<form class="form-inline" ng-submit="startUpload()"> 
<div class="form-group"> 
    <fieldset> 
     <label for="city" class="hidden"></label> 
     <input id="city" class="form-control" type="text" name="city" 
       ng-model="city" placeholder="City" /> 

     <label for="description" class="hidden"></label> 
     <input id="description" class="form-control" type="text" name="description" 
       ng-model="description" placeholder="Description" /> 

     <label for="images" class="hidden"></label> 
     <input id="images" class="form-control" type="file" name="images" 
       placeholder="Images" accept="image/*" 
       ngf-select="uploadFiles($files, $invalidFiles)" /> 

     <input class="btn btn-custom btn-submit" type="submit" value="Upload"> 
    </fieldset> 
</div> 

Угловая контроллер

angular.module('upload').controller('uploadController', function($scope, Upload) { 
var uploadUrl = 'http://localhost:1337/api/v1/upload'; 
var images; 

$scope.uploadFiles = function(files, errFiles) { 
    images = files; 
}; 

$scope.startUpload = function() { 
    var data = { 
     location: $scope.city, 
     title: 'test title', 
     description: $scope.description, 
    }; 

    Upload.upload({ 
     url: uploadUrl, 
     headers : { 
      'Content-Type': 'multipart/form-data' 
     }, 
     arrayKey: '', 
     data: data, 
     files: images 
    }); 
}; 
}); 

Backend API

var multer = require('multer'); 
var upload = multer({ dest : 'source/public/assets/img/test/' }); 

app.post(versionUrl + '/create-entry', upload.array('images'), function(req, res, next) { 
    console.log(req.body) // this contains all text data 
    console.log(req.files) // this is always an empty array 
}); 

Так как это первый раз, когда я делаю такую ​​вещь, я я полностью расстроен он не работает. В Интернете есть много примеров, обеспечивающих точно такой же код - все же этот не работает для меня.

Буду рад всем предложениям, помогая решить эту проблему.

ответ

3

Вы должны вместо этого установить images: images в вашем data объекта:

var data = { 
    location: $scope.city, 
    title: 'test title', 
    description: $scope.description, 
    images: images 
}; 

Upload.upload({ 
    url: uploadUrl, 
    arrayKey: '', 
    data: data, 
}); 
+0

Ну, это, кажется, работает в настоящее время. Не могли бы вы объяснить, почему мне нужно хранить изображения в поле «изображения»? Я думал, что мне придется использовать поле «файл». – Aer0

+0

'files' не является вариантом для Upload.upload, поэтому' files: images' будет проигнорирован. – danial

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