angularjs - How to upload files using multiple files input element? -


i'm trying upload multiple files multiple input element in 1 form.

for exemple :

 <form id="category-form" method="post" enctype="multipart/form-data" class="form" name="form">                  <div class="form-group">                   <p>pictures of category</p>                   <input id="a_pics" accept="image/*" type="file" class="file" multiple="true" my-file-upload="a_pics" required/>                 </div>                  <div class="form-group">                   <p>pictures of b category</p>                   <input id="b_pics" accept="image/*" type="file" class="file" multiple="true" my-file-upload="b_pics" required/>                 </div>      </form> 

i have service file upload. this, can know input element comes from.

.service('fileservice', function () {     var file = {};     var fileservice = {};      fileservice.getfile = function (name) {         return file[name];     };      fileservice.setfile = function (newfile, index, name) {         if (index === 0 && file[name] === undefined)           file[name] = [];         file[name][index] = newfile;     };      return fileservice; })  .directive('myfileupload', function (fileservice) {     return function (scope, element, attrs) {         element.bind('change', function () {             var index;             var index_file = 0;             (index = 0; index < element[0].files.length; index++) {               fileservice.setfile(element[0].files[index], index_file, attrs.myfileupload);               index_file++;             }             index_file = 0;         });     } }); 

until there, works well. got map of category/files. but, when upload server, need :

        var a_pics = fileservice.getfile($scope.a_pics);         var b_pics = fileservice.getfile($scope.b_pics);          var option = {             transformrequest: angular.identity,             headers: {'content-type': plan_pics.type}         };          var fd = new formdata();         var index;          (index = 0; index < a_pics.length; index++)            fd.append('file', a_pics[index]);         (index = 0; index < b_pics.length; index++)           fd.append('file', b_pics[index]);          $http.post('/api/projects', fd, option); 

so when server receive this, cannot know category of file. got this:

 [{ fieldname: 'file',     originalname: 'a_cat.png',     name: 'f771ac79f61dbdbf6fe689f593939ac5.png',     encoding: '7bit',     mimetype: 'image/png',     path: 'client/assets/images/f771ac79f61dbdbf6fe689f593939ac5.png',     extension: 'png',     size: 8185,     truncated: false,     buffer: null },   { fieldname: 'file',     originalname: 'a_cat (1).png',     name: '830dc77921461b10fecf35004fc00724.png',     encoding: '7bit',     mimetype: 'image/png',     path: 'client/assets/images/830dc77921461b10fecf35004fc00724.png',     extension: 'png',     size: 12192,     truncated: false,     buffer: null },   { fieldname: 'file',     originalname: 'b_cat_8.jpg',     name: '39f3bd6a7204ac5fdf114a870ece9f50.jpg',     encoding: '7bit',     mimetype: 'image/jpeg',     path: 'client/assets/images/39f3bd6a7204ac5fdf114a870ece9f50.jpg',     extension: 'jpg',     size: 98143,     truncated: false,     buffer: null }] 

i tried add field in file object. doesn't work. have got suggestion? i'm using angular, express, multer , node.

you need call file fields different things different categories, example:

    var a_pics = fileservice.getfile($scope.a_pics);     var b_pics = fileservice.getfile($scope.b_pics);      var option = {         transformrequest: angular.identity,         headers: {'content-type': plan_pics.type}     };      var fd = new formdata();     var index;      (index = 0; index < a_pics.length; index++)        fd.append('files_a', a_pics[index]);     (index = 0; index < b_pics.length; index++)       fd.append('files_b', b_pics[index]);      $http.post('/api/projects', fd, option); 

then you'll 2 different field names in submitted data, , can handle appropriately in server code.


Comments

Popular posts from this blog

Java 3D LWJGL collision -

spring - SubProtocolWebSocketHandler - No handlers -

methods - python can't use function in submodule -