2016-08-02 68 views
0

我試圖用一些其他數據(名稱,描述等)將一個文件上傳到MySQL DB使用AngularJS,REST(在中間層)和Hibernate(DAO)。使用AngularJS,REST,休眠將一個文件和其他數據一起上傳到MySQL數據庫

我已經嘗試了很多解決方案,包括創建我自己的directive,但仍然無法完成。

而我沒有使用<form>在我的jsp中提交。而不是,我最後使用ng-click=submit()

: -

  1. 數據類型的DTO和DAO對象的文件類型? (byte[]blob)。

  2. 如何將文件綁定到$scope.data其中data包含所有其他信息以及file

  3. $http.post(url,$scope.data)。如何在REST方法中訪問它。

@Consumes(??) Response function add(DTO object){ //CALL TO DAO AND RETURN RESPOSNE }

我試過的代碼對這個webpage但如何通過REST處理它仍然是一個問題?

更好,如果you'ld張貼此

回答

1

這是一個基本的代碼片段是我一年前使用的IM我的項目的方式。你可以嘗試:

HTML:

<form id="signupform" name="signupform" ng-submit="createUser()"> 
    <label for="email">Email</label> 
    <input type="email" ng-model="regisUser.email" ng-minlength="3" required /> 

    <label for="username">Username</label> 
    <input type="text" ng-model="regisUser.username" required /> 

    //File upload 
    <input type="file" name="file" required> 

    <button id="btn-signup" type="submit">Save</button> 
</form> 

AngularJS控制器:

// create new user 
$scope.createUser = function(){ 
    var formData = new FormData(); 
    formData.append("username", $scope.regisUser.username); 
    formData.append("email", $scope.regisUser.email); 
    formData.append("avatar", document.forms['signupform'].file.files[0]); 

    $http({ 
     method: 'POST', 
     url: '/api/users', 
     headers: {'Content-Type': undefined}, 
     data: formData 
     }) 
     .success(function(data, status) { 
      ... 
     }) 
     .error(function(data, status){ 
      ... 
     }); 
}; 

注意headers: {'Content-Type': undefined}是非常重要的。別忘了:)

春控制器:

@RequestMapping(value = "/api/users", method = RequestMethod.POST) 
public Response insert(@RequestParam String username, @RequestParam String email, @RequestParam(required = false) MultipartFile avatar) { 
    // now you can get avatar as file that was uploaded from client. 
} 

我用這樣的方式來上傳圖片和音頻文件。希望以上代碼片段是有用的。

+0

感謝您的片段。我已經使用'FileReader'而不是'FormData',因爲我沒有在我的HTML中使用表格。 –

相關問題