Enviar FormData com outro campo em Angular
Eu tenho um formulário com doisinput text
e umupload
. Tenho que enviá-lo para o servidor, mas tenho algum problema para concatenar o arquivo com o texto. O servidor espera esta resposta:
"title=first_input" "text=second_input" "file=my_file.pdf"
Isto é ohtml:
<input type="text" ng-model="title">
<input type="text" ng-model="text">
<input type="file" file-model="myFile"/>
<button ng-click="send()">
Isto é oControlador:
$scope.title = null;
$scope.text = null;
$scope.send = function(){
var file = $scope.myFile;
var uploadUrl = 'my_url';
blockUI.start();
Add.uploadFileToUrl(file, $scope.newPost.title, $scope.newPost.text, uploadUrl);
};
Isto é oDirectiva fileModel:
return {
restrict: 'A',
link: function(scope, element, attrs) {
var model = $parse(attrs.fileModel);
var modelSetter = model.assign;
element.bind('change', function(){
scope.$apply(function(){
modelSetter(scope, element[0].files[0]);
});
});
}
};
E este é oServiço que chamam o servidor:
this.uploadFileToUrl = function(file, title, text, uploadUrl){
var fd = new FormData();
fd.append('file', file);
var obj = {
title: title,
text: text,
file: fd
};
var newObj = JSON.stringify(obj);
$http.post(uploadUrl, newObj, {
transformRequest: angular.identity,
headers: {'Content-Type': 'multipart/form-data'}
})
.success(function(){
blockUI.stop();
})
.error(function(error){
toaster.pop('error', 'Errore', error);
});
}
Se eu tentar enviar, recebo o Erro 400 e a resposta é:Multipart form parse error - Invalid boundary in multipart: None
. A carga útil da solicitação é:{"title":"sadf","text":"sdfsadf","file":{}}