Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 浏览器刷新已下载到broswer窗口_Java_Spring_Jsp - Fatal编程技术网

Java 浏览器刷新已下载到broswer窗口

Java 浏览器刷新已下载到broswer窗口,java,spring,jsp,Java,Spring,Jsp,我知道这是一个被问了很多次的问题。我已经看过了所有的答案,但找不到有效的解决方案。 我正在尝试下载一个pdf文件,jsp中的代码块如下所示 但数据会被刷新到浏览器窗口中,如下所示 %PDF-1.4%aëÓ2 0 obj endobj 3 0 obj/XObject/Font>>/MediaBox[0 612 792]/Annots[>>>>>>>>>>]/Contents 16 0 R>>endobj 16 0 obj stream xœµ]uwf 请帮我做这个 这就是我尝试过的 @Reque

我知道这是一个被问了很多次的问题。我已经看过了所有的答案,但找不到有效的解决方案。 我正在尝试下载一个pdf文件,jsp中的代码块如下所示

但数据会被刷新到浏览器窗口中,如下所示

%PDF-1.4%aëÓ2 0 obj endobj 3 0 obj/XObject/Font>>/MediaBox[0 612 792]/Annots[>>>>>>>>>>]/Contents 16 0 R>>endobj 16 0 obj stream xœµ]uwf

请帮我做这个


这就是我尝试过的

@RequestMapping(value={/create',“/edit”},params=“Action=go1”,products=MediaType.APPLICATION\u OCTET\u STREAM\u value) @应答器 公共文件系统资源getFile(HttpServletRequest请求、HttpServletResponse响应、ModelMap ModelMap){ java.io.File File=new java.io.File(“C:\RAHUL\personal\HDFC Bank Credit Card.pdf”); 返回新的FileSystemResource(文件); }

@RequestMapping(value={/create“,“/edit”},params=“Action=go2”)
公共响应下载内容(HttpServletRequest)
抛出IOException{
java.io.File File=new java.io.File(“C:\\RAHUL\\personal\\HDFC Bank Credit Card.pdf”);
HttpHeaders respHeaders=新的HttpHeaders();
respHeaders.setContentType(MediaType.APPLICATION_OCTET_STREAM);
respHeaders.setContentLength(12345678);
setContentDispositionFormData(“附件”,“fileNameIwant.pdf”);
InputStreamResource isr=新的InputStreamResource(新文件InputStream(文件));
返回新的ResponseEntity(isr、RespHeader、HttpStatus.OK);
}
@RequestMapping(值={/create',“/edit”},params=“Action=go3”,method=RequestMethod.GET)
public void download2(HttpServletResponse,HttpServletRequest){
试一试{
java.io.File File=new java.io.File(“C:\\RAHUL\\personal\\HDFC Bank Credit Card.pdf”);
InputStream in=new BufferedInputStream(new FileInputStream(file));
setHeader(“内容处置”、“附件;文件名=empfile.pdf”);
response.setContentType(“application/pdf”);
setAttribute(“覆盖”、“Y”);
org.apache.commons.io.IOUtils.copy(在response.getOutputStream()中);
response.flushBuffer();
}catch(filenotfounde异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}

当某些内容已经写入响应时(或者至少在刷新响应缓冲区时),您无法写入标题-可能您在
之前已经在响应中打印了一些内容-请改用servlet或确保不存在任何内容(甚至不包括空格)已经编写过。这是Spring Web应用程序的一部分吗?@Ralph是的,这是Spring Web应用程序的一部分。我曾尝试在controller中执行此操作,但不起作用(甚至无法获得上面帖子中提到的输出。我不知道为什么)@Alexander,这是jsp中唯一的代码实现,现在。我如何确保以前没有写任何响应?删除scriptlet代码之外的所有空白(换行符、空格等)。但不建议这样做-请使用servlet而不是JSP。向我展示JSP,我可以告诉你如何更改它。@Alexander,JSP中没有下载窗口或输出。实际上,框架需要从函数返回视图名称-它是与Jboss服务器或过滤器相关的还是与Jboss服务器或过滤器相关的?当您调用处理程序时,实际会发生什么?@Alexander,控件正在访问我创建的方法,方法内的一切都很好(响应设置为|),控件从方法返回——在该控件返回框架之后——然后什么也没有。。
@RequestMapping(value = {"/create","/edit"}, params = "Action=go2")
public ResponseEntity<InputStreamResource> downloadStuff(HttpServletRequest request)
                                                                  throws IOException {
    java.io.File file=new java.io.File("C:\\RAHUL\\personal\\HDFC Bank Credit Card.pdf");
    HttpHeaders respHeaders = new HttpHeaders();

    respHeaders.setContentType(MediaType.APPLICATION_OCTET_STREAM);
    respHeaders.setContentLength(12345678);
    respHeaders.setContentDispositionFormData("attachment", "fileNameIwant.pdf");

    InputStreamResource isr = new InputStreamResource(new FileInputStream(file));
    return new ResponseEntity<InputStreamResource>(isr, respHeaders, HttpStatus.OK);
}

@RequestMapping(value = {"/create","/edit"}, params = "Action=go3",method = RequestMethod.GET)
public void download2(HttpServletResponse response,HttpServletRequest request) {

    try {
        java.io.File file=new java.io.File("C:\\RAHUL\\personal\\HDFC Bank Credit Card.pdf");
        InputStream in = new BufferedInputStream(new FileInputStream(file));

         response.setHeader("Content-Disposition", "attachment; filename=empfile.pdf");
        response.setContentType("application/pdf");

        request.setAttribute("override","Y");
         org.apache.commons.io.IOUtils.copy(in, response.getOutputStream());
        response.flushBuffer();
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}