有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java下载jsp中任何文件格式的内容类型应该是什么?

我想提供下载所有文件类型的功能。。。有没有办法下载jsp中的任何文件格式

我的代码片段:

    String filename = (String) request.getAttribute("fileName");        
    response.setContentType("APPLICATION/OCTET-STREAM");
    String disHeader = "Attachment";
    response.setHeader("Content-Disposition", disHeader);

    // transfer the file byte-by-byte to the response object
    File fileToDownload = new File(filename);
    response.setContentLength((int) fileToDownload.length());
    FileInputStream fileInputStream = new FileInputStream(fileToDownload);
    int i = 0;
    while ((i = fileInputStream.read()) != -1) {
        out.write(i);
    }
    fileInputStream.close();

如果我将setContentType指定为APPLICATION/OCTET-STREAM,则会下载pdf、文本、文档文件。。。。但问题是图像文件

图像文件有什么问题?我想下载所有图像文件类型

我搜索了类似的问题,但找不到正确的答案。。。 谢谢


共 (3) 个答案

  1. # 1 楼答案

    最后我设法做到了。。。 问题在于JSP的“Out.write”无法写入字节流

    我用servlet替换了jsp文件

    代码片段是:

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        try {
            String filename = (String) request.getAttribute("fileName");
            response.setContentType("application/octet-stream");
            response.setHeader("Content-Disposition",
                    "attachment;filename="+filename);
    
            File file = new File(filename);
            FileInputStream fileIn = new FileInputStream(file);
            ServletOutputStream out = response.getOutputStream();
    
            byte[] outputByte = new byte[(int)file.length()];
            //copy binary contect to output stream
            while(fileIn.read(outputByte, 0, (int)file.length()) != -1)
            {
            out.write(outputByte, 0, (int)file.length());
            }
         }
    

    现在我可以下载所有类型的文件

    感谢您的回复:)