Ну вот сколько я этих готовых решений не попробовал, почему-то так и не получилось реализовать, может всё дело было в особенностях бэкенда на django. Но каждый раз получал 400 ошибку. В итоге рабочая реализация получилась вот такой.
$scope.uploadFile = function(file, title){
var fd = new FormData();
fd.append('title', title);
fd.append('image', file);
fd.append('hotel', $scope.hotel.id);
fd.append('is_primary', false);
return $http({
url: '/api/v2/hotels/image/',
method: 'POST',
data: fd,
headers: { 'Content-Type': undefined },
transformRequest: angular.identity,
transformResponse: function (data) {
data = JSON.parse(data);
return data;
}
})
.success(function(data){
$scope.images.push(data);
});
};