【问题标题】:Angularjs upload Request.Content.IsMimeMultipartContent returns falseAngularjs 上传 Request.Content.IsMimeMultipartContent 返回 false
【发布时间】:2016-06-29 15:34:38
【问题描述】:

我正在尝试将文件与表单数据一起从 Angularjs 客户端上传到 Web api。我在网上找到了一些参考代码并以相同的方式实现。 Web API方法中的第一行代码是if (!Request.Content.IsMimeMultipartContent()) { throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType); }

返回 false 并将失败返回给客户端。我不知道我做错了什么......

下面是我 Angularjs 中的代码

 var _uploadNotes = function (notes, files) {
            var deferred = $q.defer();
            $http({
                method: 'POST',
                url: "api/issue/uploadNotes",
                headers: { 'Content-Type': false },
                transformRequest: function (data) {
                    var formData = new FormData();                    
                    formData.append("model", angular.toJson(data.model));
                    for (var i = 0; i < data.files.length; i++) {
                        formData.append("file" + i, data.files[i]);
                    }
                    return formData;
                },
                data: { model: notes, files: files }
            }).
            success(function (data, status, headers, config) {
                deferred.resolve();
            }).
            error(function (data, status, headers, config) {
                deferred.reject();
            });

            return deferred.promise;
        };

【问题讨论】:

  • @user124916 - 您找到解决此问题的方法了吗?

标签: angularjs asp.net-web-api2


【解决方案1】:

只需更换 headers: { 'Content-Type': false},headers: { 'Content-Type': undefined},

整个代码:

 var _uploadNotes = function (notes, files) {
            var deferred = $q.defer();
            $http({
                method: 'POST',
                url: "api/issue/uploadNotes",
                headers: { 'Content-Type': undefined},
                transformRequest: function (data) {
                    var formData = new FormData();                    
                    formData.append("model", angular.toJson(data.model));
                    for (var i = 0; i < data.files.length; i++) {
                        formData.append("file" + i, data.files[i]);
                    }
                    return formData;
                },
                data: { model: notes, files: files }
            }).
            success(function (data, status, headers, config) {
                deferred.resolve();
            }).
            error(function (data, status, headers, config) {
                deferred.reject();
            });

            return deferred.promise;
        };

【讨论】:

  • 我的情况与 OP 类似,但使用的是 Fetch API 而不是 AngularJS。不幸的是,这个答案不起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-23
  • 2014-01-01
  • 1970-01-01
  • 2015-04-29
相关资源
最近更新 更多