upload file to RESTful service in angularjs

Oleh Kuchuk picture Oleh Kuchuk · Nov 8, 2014 · Viewed 16.5k times · Source

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.

Answer

aarosil picture aarosil · Nov 14, 2014

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