簡體   English   中英

AngularJS + Spring + REST —發送多個文件和數據

[英]AngularJS + Spring + REST — sending multiple files and data

我有一個小問題...我無法將多個文件上傳到我的服務器,請看一下我的代碼:

春季上下文中

    <bean id="multipartResolver"
          class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    </bean>

Spring控制器中

    @RequestMapping(value = "/address-to-add-object/add", method = RequestMethod.POST)
    public void addObject(@RequestParam(value = "files", required = false) MultipartFile[] files, @RequestParam("formDataJson") String formDataJson) {
        //-- my stuff with formDataObject and uploaded files
    }

角度控制器中

         $scope.sendForm = function(){
            var formData = new FormData();
            formData.append('formDataJson', JSON.stringify($scope.myObject));
            var files = $("#file-0a").prop('files');
            var filesArray = [];
            for (var i = 0 ; i < files.length ; i ++){
                filesArray.push(files[i]);
            }
            formData.append('files', filesArray);
            ObjectService.add(formData).$promise.then(function () {
                Notification.info('success');
            }, function () {
                Notification.error('error');
            });
        };

ObjectService中

objectService.factory('ObjectService', ["$resource", function($resource) {
    var baseUrl = './address-to-add-object';
    return $resource(baseUrl, {},
        {
            add: {
                url: baseUrl + '/add',
                headers: {
                    'Content-Type': undefined
                },
                transformRequest: angular.identity,
                method: 'POST'
            }
        });
}]);

要求內容

------WebKitFormBoundaryNhBUQjEH2kAlVlog
Content-Disposition: form-data; name="formDataJson"

{---json object---}
------WebKitFormBoundaryNhBUQjEH2kAlVlog
Content-Disposition: form-data; name="files"

[object File],[object File],[object File]

------WebKitFormBoundaryNhBUQjEH2kAlVlog--

控制台錯誤

POST http://localhost:8080/project/address-to-add-object/add 500 (Internal Server Error)

現在我的問題的描述;)

我可以輕松地發送一個文件和一些數據,但是當我想發送多個文件時,會出現上述錯誤或“ files”變量為空。 我嘗試使用List <>,包裝到bean,並且無法從ajax請求(或在發送filesArray時發送文件數組)截獲fileList對象(當發送$(“#file-0a”)。prop('files')時)。

您能幫我嗎,您有什么想法我可以做什么?

問題出在sendig文件上-或沒有發送,因為如您所見,發送的是文件的toString

[object File],[object File],[object File]

我不得不將文件的外觀更改為FormData對象:

var formData = new FormData();
formData.append('formDataJson', JSON.stringify($scope.touristObject));
var files = $("#file-0a").prop('files');
for (var i = 0 ; i < files.length ; i ++){
   formData.append('files', files[i]);
}

並且在Spring Controller端沒有任何更改

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM