0
嘗試從AngularJS客戶端向MVC Web API發送一些數據&附件(文件),但它不起作用:除了附加文件外,我可以看到所有字段爲空將數據和文件從Angular發送到Web API
這裏的型號:
class Model{
... //the fields
public HttpPostedFileBase Photo { get; set; }//Attachment file, represented as an image
}
這裏的網絡API:
public IHttpActionResult CreateModel([FromBody]Model model)
{
...
}
這裏的AngularJS代碼:
(function() {
angular.module("application")
.controller("homeCtrl", ["$scope", "entityService",
function ($scope, entityService) {
$scope.createModel = function (model)
{
entityService.createModel(model)
.then(function (data) {
console.log(data);
});
};
$scope.model = {
FirstName: "John",
LastName: "Doe"
};
}]);
})();
"use strict";
(function() {
angular.module("application")
.factory("entityService", ["akFileUploaderService", function (akFileUploaderService) {
var createModel = function (model) {
return akFileUploaderService.saveModel(model, "/api/CreateModel");
};
return {
createModel: createModel
};
}]);
})();
(function() {
"use strict"
angular.module("akFileUploader", [])
.factory("akFileUploaderService", ["$q", "$http",
function ($q, $http) {
var saveModel = function (data, url) {
var deferred = $q.defer();
$http({
url: url,
method: "POST",
data: JSON.stringify(data),
transformRequest: angular.identity,
headers: { 'Content-Type': "application/json" }
}).success(function (result) {
deferred.resolve(result);
}).error(function (result, status) {
deferred.reject(status);
});
return deferred.promise;
};
return {
saveModel: saveModel
}
}])
.directive("akFileModel", ["$parse",
function ($parse) {
return {
restrict: "A",
link: function (scope, element, attrs) {
var model = $parse(attrs.akFileModel);
var modelSetter = model.assign;
element.bind("change", function() {
scope.$apply(function() {
modelSetter(scope, element[0].files[0]);
});
});
}
};
}]);
})(window, document);
而這裏的HTML瀏覽:
....
<div class="form-group">
<label for="attachment">Photo:</label>
<div class="col-md-10">
<input type="file" name="attachment" class="form-control" data-ak-file-model="model.Photo" />
</div>
</div>
<button type="button" ng-disabled="newForm.$invalid" ng-click="createModel(model)" class="btn btn-primary">
Create
</button>
@ J.Doe..in your modal where you pass the Photo property? – MukulSharma
您需要服務器端的CustomMEdiaTypeFormatter。看到我的答案在這裏 - http://stackoverflow.com/questions/38537484/post-image-to-asp-net-api-2-and-angular-2/38539120#38539120。 –
我不認爲這是關於服務器端。客戶端顯示json對文件沒有任何效果,儘管轉換爲json之前的對象包含一些數據 –