使用AngularJS,REST,Hibernate将文件与其他数据一起上传到MySQL DB

时间:2016-08-02 08:48:22

标签: java angularjs rest

我尝试使用AngularJS,REST(中间层)和Hibernate(DAO)将文件和其他一些数据(名称,描述等)上传到MySQL数据库。

我尝试了很多解决方案,包括创建我自己的directive,但我仍然无法做到。

我没有在<form>中使用jsp提交。而不是那样,我最后使用ng-click=submit()

质疑: -

  1. 文件类型的DTO和DAO对象的数据类型? (byte[]blob)。

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

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

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

    我已经尝试了webpage上的代码,但如何通过REST处理它仍然是一个问题?

    如果您发布此基本代码段

    ,那就更好了

1 个答案:

答案 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}}

我用这种方式上传图片和音频文件。希望上面的一些片段代码很有用。