2017-02-06 6 views
0

У меня есть странная ошибка при загрузке файла.
Размер файла ~ 300mb ..
Когда я пытаюсь загрузить его, я улавливаю «ошибку из памяти: java heap space». Я попытался увеличить размер кучи до 3 гб, но этого все равно недостаточно.
Конфигурация:
Spring java config, spring jdbctemplate, mysql.
Когда я пытаюсь загрузить тот же файл, используя другой проект (spring xml config, upload with executefunction, oracle), он берет 900mb от кучи и загружает успешно.
Любые идеи, что происходит или какие-либо намеки на то, как найти проблему?Весенняя загрузка файла, ошибка размера кучи java

@RequestMapping(value = {"/add_file"}, method = {RequestMethod.POST}/*, 
     params = {"file","path","parent_id"}*/) 
public String addFile(
     @RequestParam("file") MultipartFile file, 
     @RequestParam("parent_id") int parent_id, 
     @RequestParam("path") String path, 
     @RequestParam("id") int id 
) { 
    try { 
     if (id == -1) fileDAO.addFile(file.getOriginalFilename(), file.getBytes(), parent_id); 
     else fileDAO.updateFile(id, file.getBytes()); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    return "redirect:" + path; 
} 
/* dao function */ 
     @Override 
    public void addFile(String name, byte[] blob, int folder_id) { 
     if (folder_id == 0) { 
      jdbcTemplate.update("insert into file(name, content) VALUES(?,?)", 
        new Object[]{name, new SqlLobValue(blob)}, 
        new int[]{Types.VARCHAR, Types.BLOB}); 
     } 
} 

обновление: комментировал содержание AddFile. Теперь требуется ~ 500 мб для всего процесса (для загрузки файла в контроллер, я полагаю)

update2: Изменено db to oracle - это работает. Итак, проблема в свойствах mysql ..?

+0

http://stackoverflow.com/questions/945471/handling-of-huge-blobs-in-mysql MySQL не для огромных blobs = \ – Kirill

ответ

0

Используйте MultipartFile.getInputStream() и MultipartFile.getSize() и соответствующий конструктор SqlLobValue.

 Смежные вопросы

  • Нет связанных вопросов^_^