Search code examples
angularjsfile-uploadmultifile-uploader

upload file to RESTful service in angularjs


i try to make angular CRUD app that is a bit like "dropbox". So, it must have file and folder hosting with sharing and access functionality. I'm stuck on a question how to upload image and video files? I used File API (FileReader, Blob) to make preview of files on the client side but i dont have idea how to POST this type of data to server.


Solution

  • Something like this should work well to send as multipart/form-data request to backend API:

    var file = ... // get from file input;
    var backendUrl = ...
    var fd = new FormData();
    
    fd.append('myFile', file, 'filename.ext');
    
    $http.post(backendUrl, fd, {
        // this cancels AngularJS normal serialization of request
        transformRequest: angular.identity,
        // this lets browser set `Content-Type: multipart/form-data` 
        // header and proper data boundary
        headers: {'Content-Type': undefined}
    })
    
    .success(function(){
        //file was uploaded
    })
    
    .error(function(){
        //something went wrong 
    });
    

    See here for reference:

    FormData API Doc

    Using FormData Objects (MDN)

    multipart-formdata file upload with AngularJS