我尝试使用AngularJS,REST(中间层)和Hibernate(DAO)将文件和其他一些数据(名称,描述等)上传到MySQL数据库。
我尝试了很多解决方案,包括创建我自己的directive
,但我仍然无法做到。
我没有在<form>
中使用jsp
提交。而不是那样,我最后使用ng-click=submit()
。
质疑: -
文件类型的DTO和DAO对象的数据类型? (byte[]
或blob
)。
如何将文件绑定到$scope.data
,其中data
包含所有其他信息以及file
?
$http.post(url,$scope.data)
。如何在REST方法中访问它。
@Consumes(??)
Response function add(DTO object){
//CALL TO DAO AND RETURN RESPOSNE
}
我已经尝试了webpage上的代码,但如何通过REST
处理它仍然是一个问题?
如果您发布此基本代码段
,那就更好了答案 0 :(得分:0)
这是我一年前使用我的项目的方式。你可以尝试:
HTML:
// 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){
...
});
};
AngularJS控制器:
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.
}
非常重要。不要忘了它:)
Spring控制器:
{{1}}
我用这种方式上传图片和音频文件。希望上面的一些片段代码很有用。