2016-08-02 9 views
0

AngularJS、RESTを使用して他のデータ(名前、説明など)と共にMySQL DBにファイルをアップロードしようとしています(中間層)とHibernate(DAO)です。AngularJS、REST、Hibernateを使用して他のデータと共にMySQL DBにファイルをアップロード

自分でdirectiveを作成するなど、多くの解決策を試しましたが、まだ解決できません。

<form>私のjspに投稿していません。むしろ、私は最後にng-click=submit()を使用しています。 DTOとDAOの

  1. データ型ファイルタイプ用のオブジェクト - :

    は疑問? (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

このための基本的なコードスニペットを投稿する場合は、私は一年前、イム私のプロジェクトを使用する方法です。あなたは試みることができる:

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

スニペットありがとうございます。私は自分のhtmlでフォームを使用していないので、 'FormData'の代わりに' FileReader'を使用しています。 –

関連する問題