загрузка изображения прошла успешно, но я открываю изображение, и оно показывает «этот файл не может быть открыт. Файл может быть поврежден.»

#spring #model-view-controller

#spring #модель-вид-контроллер

Вопрос:

 //this section is download  user image data from the db
@RequestMapping(value={"/downloadRow-{img_id}"} , method=RequestMethod.GET)
public void downloadImageFile(@PathVariable int img_id,HttpServletResponse response ,HttpServletRequest request,ModelMap model) 
throws IOException, ServletRequestBindingException{

    ImageModel imgModel=service.downloadFile(img_id);   
    response.setContentType(imgModel.getImageContentTyepe());
    response.setContentLength(imgModel.getImageContentTyepe().length());
    response.setHeader("Content-Disposition","attachment; filename="" imgModel.getImg_name() "" ");
    FileCopyUtils.copy(imgModel.getImageConent(), response.getOutputStream());              //qustn
    response.getOutputStream().close();
    showRecord(model) ;

}
  

Ответ №1:

Я думаю, вам не хватает

 response.flushbuffer 
  

после копирования потока. У меня это работает:

             response.setContentType(MediaType.APPLICATION_OCTET_STREAM.toString());
            response.addHeader("Content-Disposition", "attachment; filename="   file.getFileName());
            IOUtils.copy(fsin, response.getOutputStream());
            fsin.close();
            response.flushBuffer();
            response.getOutputStream().close()
  

Комментарии:

1. тогда что-то еще не так, эта загрузка работает так, как у меня было задумано, ваш исходный файл в порядке? как вы его загружаете?