2014-11-08 2 views
5

Я пытаюсь сделать угловое приложение CRUD, которое немного похоже на «dropbox». Таким образом, он должен иметь хостинг файлов и папок с функциями совместного доступа и доступа. Я застрял в вопросе, как загружать графические и видеофайлы? Я использовал File API (FileReader, Blob), чтобы сделать предварительный просмотр файлов на стороне клиента, но у меня нет идеи, как отправить этот тип данных на сервер.загружать файл в службу RESTful в angularjs

+0

Используйте [FormData] (https://developer.mozilla.org/en-US/docs/Web/API/FormData) – aarosil

+0

Итак, мне нужно создать объект FormData, а затем вставить в него данные и отправить объект FormData в мой API? –

+0

Точно, я могу отправить более подробный ответ с образцом кода, если хотите. – aarosil

ответ

6

Что-то, как это должно работать хорошо, чтобы отправить в multipart/form-data запрос на бэкэнд 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 
}); 

Смотрите здесь для справки:

FormData API Doc

Using FormData Objects (MDN)

multipart-formdata file upload with AngularJS

+0

Это очень полезно. Спасибо за помощь. –

+0

на самом деле простейшее решение, предоставленное interwebs, спасибо – FloydThreepwood

+1

Как вы заполняете «файл» varialble? I mena, как связать его с контролем ввода? – Nemus

0

Вы можете загрузить файл с помощью директив ngFileUpload или angularFileUpload.

В случае angularFileUpload, можно использовать пло.загрузка в контроллере и в случае ngFileUpload, можно использовать .http

Кроме того, можно также использовать применение/х-WWW-форм-urlencoded содержание типа вместо multipart при условии, что ваш файл не огромен. В случае приложения/x-www-form-urlencoded вы можете просто получить значение в веб-сервисе rest как обычный InputStream, тем самым не требуя сортировки многостраничных данных.

Вы можете обратиться ниже для возможных способов загрузки файла с помощью угловых JS и отдыха веб-службы:

http://technoguider.com/2015/08/file-upload-using-angular-js-and-rest-web-service/