Загрузите файл вместе с другими данными в базу данных MySQL, используя AngularJS, REST, Hibernate

0

Я пытаюсь загрузить файл вместе с некоторыми другими данными (имя, описание и т.д.) В MySQL DB, используя AngularJS, REST (в среднем слое) и Hibernate (DAO).

Я пробовал много решений, включая создание моей собственной 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 }

Я пробовал код на этой веб-странице, но как обрабатывать его через REST все еще проблема?

Лучше, если вы опубликовали базовый фрагмент кода для этого

Теги:
rest

1 ответ

0

Именно так я использовал мой проект год назад. Вы можете попробовать:

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.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню