Maison  >  Questions et réponses  >  le corps du texte

java - jsp+springMVC实现文件下载的时候后台抛出getOutputStream()异常

使用JSP+springMVC框架做的web平台,在做文件下载的时候,遇到这样的问题:

文件下载部分的代码是这样写的:

@RequestMapping("/ModelDownload{id}")
public String ModelDownLoad(@PathVariable int id, HttpServletResponse response){
    String fileName = "download.txt"; 
    String filePath = "D:\\";
    String modelName = new ModelService().getModelById(id).getModelName();
    System.out.println(modelName);
    response.reset();
    response.setContentType("application/x-download");
    response.addHeader("Content-Disposition", "attachment;filename="+fileName);//重新设置响应头文件字段,设置下载文件的文件名
    OutputStream OutputStream = null;
    FileInputStream fileInputStream = null;
    try {
        OutputStream = response.getOutputStream();
        fileInputStream = new FileInputStream(filePath+fileName);
        byte[] buffer = new byte[1024*10];//设置文件大小上限为10M
        for (int read; (read = fileInputStream.read(buffer)) != -1;){
            OutputStream.write(buffer,0,read);
        }
    } catch (IOException e) {
        // TODO Auto-generated catch block
        System.out.println(e.toString());
    }
    finally{
        try {
            fileInputStream.close();
            OutputStream.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    return "success";
}

百度了很多,几乎都是说在JSP上使用out对象进行clear()和close()操作的,根本没有针对后台操作遇到的相同问题的解决方案,求大神指导。

迷茫迷茫2743 Il y a quelques jours527

répondre à tous(1)je répondrai

  • PHP中文网

    PHP中文网2017-04-18 10:55:58

    Solution du problème : changez simplement le type de retour de la méthode en void.
    La raison du problème peut être que lorsque le type de retour est String, cliquez sur le bouton de téléchargement et la page de téléchargement apparaîtra à ce moment-là. , le code d'arrière-plan est interrompu et il n'y a pas de Just close();

    répondre
    0
  • Annulerrépondre