このための基本的なコードスニペットを投稿する場合は、私は一年前、イム私のプロジェクトを使用する方法です。あなたは試みることができる:
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.
}
私は画像や音声ファイルをアップロードするには、この方法を使用していました。上記のスニペットコードを使用すると便利です。
スニペットありがとうございます。私は自分のhtmlでフォームを使用していないので、 'FormData'の代わりに' FileReader'を使用しています。 –