首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >上传文件出错:当前请求不是spring 4和angular js中的分块请求

上传文件出错:当前请求不是spring 4和angular js中的分块请求
EN

Stack Overflow用户
提问于 2018-03-07 03:52:25
回答 1查看 957关注 0票数 0

我使用了Spring4和angularjs,对于多部分文件,我使用了commons-fileupload-1.3.2.jar和commons-io-2.4.jar我得到了错误"org.springframework.web.multipart.MultipartException:当前请求不是一个多部分请求“当上传文件时

application-servlet.xml包含以下条目:

代码语言:javascript
复制
<bean id="multipartResolver"  class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <property name="maxUploadSize" value="20971520" /> 
</bean>

html文件:`

代码语言:javascript
复制
<div class="padding-5 border-1">
    <input type="file" id="uploadFileName" 
           size="60" class="filestyle width100per"
           data-icon="false" file-model="importIdeaFile"
           name="filename" required>
</div>`

角度控制器:

代码语言:javascript
复制
$scope.saveFile = function(){
     var filename = $scope.importIdeaFile.name;
             var formdata = new FormData();
       if(typeof $scope.importIdeaFile != 'undefined' && $scope.importIdeaFile != null && $scope.importIdeaFile !=''){
              formdata.append("file",$scope.importIdeaFile);
                     formdata.append('data',new Blob([JSON.stringify($scope.uploadPopupData)], {
                type: "application/json"
            }));$http.post('loginData/uploadIdeafile',formdata,{headers: {'Content-Type': undefined}})
                    .then(
                            function(response,status) {
                                alert(status);  
                            },
                            function(errResponse) {
                                alert(" Error while fetching User");
                            });        
       }
 }`

弹簧控制器:

代码语言:javascript
复制
@RequestMapping(value = "/uploadIdeafile", method = RequestMethod.POST, produces = "application/json")
public String uploadIdeafile(@RequestPart("file") MultipartFile formdata,
              HttpServletRequest request) {
       String methodName = "uploadIdeafile(@RequestBody MultipartFile formdata, HttpServletRequest request)";
       String message = "true";
       return message;}

已创建目录:

代码语言:javascript
复制
WebApp.directive('fileModel', ['$parse', function ($parse) {
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]);
            });
        });
    }
};}]);
EN

回答 1

Stack Overflow用户

发布于 2018-03-09 03:04:52

我在http调用中添加了“transformRequest: angular.identity”,解决了问题。

代码语言:javascript
复制
$scope.saveFile = function(){
 var filename = $scope.importIdeaFile.name;
         var formdata = new FormData();
   if(typeof $scope.importIdeaFile != 'undefined' && $scope.importIdeaFile != null && $scope.importIdeaFile !=''){
          formdata.append("file",$scope.importIdeaFile);
                 formdata.append('data',new Blob([JSON.stringify($scope.uploadPopupData)], {
            type: "application/json"
        }));$http.post('loginData/uploadIdeafile',formdata,{headers: {'Content-Type': undefined}})
                .then(
                        function(response,status) {
                            alert(status);  
                        },
                        function(errResponse) {
                            alert(" Error while fetching User");
                        });        
   }

}`

新代码:

代码语言:javascript
复制
$scope.saveFile = function(){
 var filename = $scope.importIdeaFile.name;
         var formdata = new FormData();
   if(typeof $scope.importIdeaFile != 'undefined' && $scope.importIdeaFile != null && $scope.importIdeaFile !=''){
          formdata.append("file",$scope.importIdeaFile);
                 formdata.append('data',new Blob([JSON.stringify($scope.uploadPopupData)], {
            type: "application/json"
        }));$http.post('loginData/uploadIdeafile',formdata,{
             transformRequest: angular.identity,
             headers: {'Content-Type': undefined}})
                .then(
                        function(response,status) {
                            alert(status);  
                        },
                        function(errResponse) {
                            alert(" Error while fetching User");
                        });        
   }

}`

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49138913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档