2015-04-24 78 views
0

我遇到了使用angularjs ng-img-crop和Spring-boot REST web服務的問題。我想從ng crop上傳一個圖像文件到我的後端web服務。spring RESTcontroller接受dataURI

我試着寫一個彈簧控制器,但它失敗了,我找不到一個很好的教程。幫助我解決這個基本要求。

謝謝!

app.js

angular.module('myApp', [ 
         'ngRoute', 
         'myApp.view1', 
         'myApp.view2', 
         'myApp.version', 
         'ngImgCrop' 
         ]) 
         .controller('Ctrl',['$scope','notify', function($scope,notify) { 
          $scope.myImage=''; 
          $scope.myCroppedImage=''; 

          var handleFileSelect=function(evt) { 
           var file=evt.currentTarget.files[0]; 
           var reader = new FileReader(); 
           reader.onload = function (evt) { 
            $scope.$apply(function($scope){ 
             $scope.myImage=evt.target.result; 
            }); 
           }; 
           reader.readAsDataURL(file); 
          }; 
          angular.element(document.querySelector('#fileInput')).on('change',handleFileSelect); 
          $scope.submit=function() { 
           notify($scope.myCroppedImage); 
          }; 
         }]). 
         factory('notify',['$http', function($http) { 
           return function(myCroppedImage) { 
            var name = 'vishnu'; 
            $http.post('http://localhost:8080/imageUpload', myCroppedImage) 
            .success(function(data, status, headers, config) { 
            alert("success"); 
            }) 
            .error(function(data, status, headers, config) { 
             alert("fail"); 
            }); 
           } 
         }]) 

controller.java

@RequestMapping(value="/imageUpload",method=RequestMethod.POST) 
@ResponseBody 
public String imageUpload(@RequestBody MultipartFile data){ 

    return "success"; 
} 

,當我用下面的要求運行,我得到了Web服務的一些例外。

遠程地址:127.0.0.1:8080 請求URL:http://localhost:8080/imageUpload 請求方法:POST 狀態代碼:500內部服務器錯誤 請求Headersview源 接受:應用/ JSON,文本/純,/ 接受編碼:gzip,緊縮 接受語言:EN-US,EN; q = 0.8 連接:保持活躍 的Content-Length:1850 內容類型:應用程序/ JSON的;字符集= UTF-8 主機:localhost:8080 產地:fi le:// User-Agent:Mozilla/5.0(Windows NT 6.1; WOW64)爲AppleWebKit/537.36(KHTML,例如Gecko)鉻/ 40.0.2214.115 Safari瀏覽器/ 537.36 **

請求有效載荷 數據:圖像/ PNG; BASE64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAFIklEQVR4Xu3VsRHAMAzEsHj/pTOBXbB9pFchyLycz0eAwFXgsCF .......

響應頭 連接:關閉 內容類型:應用/ JSON;字符集= UTF-8 日期:星期五,2015年4月24日12時40分35秒GMT 服務器:Apache-狼/ 1.1 傳輸編碼:chunked

在Java異常 org.springframework.web.multipart.MultipartException:當前的請求不是多請求

回答

0

首先你的控制器應樣子的:

public ResponseEntity<Response> fileUpload(@RequestParam("file") MultipartFile file) { 

使用@RequestParam代替的@RequestBody,然後將該文件發送給您在註釋中使用的同名參數。

此外,您的請求應與multipart/form-data類型發送。例如,一個常見的html會是:

<form method="POST" enctype="multipart/form-data" action="your url"> 
+0

謝謝您的輸入。我在前端有棱角,我正在使用ng-img-crop,請告訴我如何在javascript內使用角度調用。 – vishnumanohar