2016-11-11 6 views
1

У меня есть file.zip в БД, как BLOB. Я хочу создать метод в контроллере Spring для загрузки этого файла на стороне клиента.Как загрузить zip-файл с контроллера на стороне клиента? Весенняя обувь

@RequestMapping(value = "/downloadResolution/{resolutionId}", method = RequestMethod.GET) 
    public void downloadResolution(@PathVariable("resolutionId") Long resolutionId, HttpServletResponse response) { 
     Resolution resolution = resolutionService.findOne(resolutionId); 
     ResolutionArchive resolutionArchive = resolution.getResolutionArchive(); 
     if (resolutionArchive == null) return; 
     byte[] archive = resolutionArchive.getArchive(); 
     //this byte[] archive - my zip file from db 
    } 

Как это изменить? Чтобы загрузить это на стороне клиента?

User press download button. Methos получает данные из БД в байт [], и пользователь может его загрузить.

EDIT

Я попытался решение @pleft и работать. и я знал - я использую ajax для метода вызова

function downloadResolution(resulutionId) { 
     $.ajax({ 
      type: 'GET', 
      dataType: "json", 
      url: '/downloadResolution/' + resulutionId, 
      success: function (data) { 
      }, 
      error: function (xhr, str) { 
      } 
     }); 
    } 

Как реализовать это, если я использую ajax?

ответ

4

Вы можете использовать OutputStream вашего HttpServletResponse, чтобы написать там свой архив.

например.

response.setHeader("Content-Disposition", "attachment; filename=file.zip"); 
response.setHeader("Content-Type", "application/zip"); 
response.getOutputStream().write(archive); 

EDIT

Sample загрузить

@RequestMapping(value = "/downloadResolution/{resolutionId}", method = RequestMethod.GET, produces = MediaType.APPLICATION_OCTET_STREAM_VALUE) 
public void downloadResolution(@PathVariable("resolutionId") Long resolutionId, HttpServletResponse response) throws IOException { 
    String test = "new string test bytes"; 
    response.setHeader("Content-Disposition", "attachment; filename=file.txt"); 
    response.getOutputStream().write(test.getBytes()); 
} 
+0

Не окно показывает для сохранения файла, когда я нажимаю "скачать" и метод downloadResolution был выполнен – user5620472

+0

Вы уверены, что ваш 'resolutionArchive' не является нулевым ? Потому что в вашем коде я вижу 'if (resolutionArchive == null) return;' следовательно, ничего не произойдет, если ваша программа вернется. Можете ли вы его отладить? – pleft

+0

Да, я уверен. Это НЕ НЕТ. – user5620472

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

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