在Java Servlet中设置多种内容类型

时间:2019-04-18 11:45:33

标签: java servlets

我有.pdf,.jpg,.docx文件,我想在单击按钮时打开它们。是否有任何方法可以在servlet中设置多种内容类型。我的servlet代码是这样的。

String Docpath=request.getParameter("document");
String docname=request.getParameter("docName");

response.setContentType("application/pdf");
response.setHeader("Content-Disposition","inline;filename="+docname);

BufferedInputStream bis=null;
BufferedOutputStream bos=null;

try{
    ServletOutputStream outs=response.getOutputStream();
    File file=new File("T:\\Temp\\"+docname);
    File original=new File(Docpath);
    File destination=new File("T:\\Temp\\");
    FileUtils.copyFileToDirectory(original,destination);
    InputStream input=new FileInputStream(file);
    bis=new BufferedInputStream(input);
    bos=new BufferedOutputStream(outs);
    byte[]buf=new byte[2048];

    int bytesRead;
    while((bytesRead=bis.read(buf))>0) {
        bos.write(buf,0,bytesRead);
    }
} catch(IOException e) {
    e.printStackTrace();
} finally {
    bis.close();
    bos.close();
}

有工作代码

File file=new File("T:\\Temp\\"+docname);
Path filePath=Paths.get("T:\\Temp\\"+docname);
response.setContentType(Files.probeContentType(filePath));

1 个答案:

答案 0 :(得分:2)

您不能设置多种内容类型。您需要确定从磁盘加载的文件的内容类型:

File file=new File("T:\\Temp\\"+docname);

找出内容类型之后,进行设置:

response.setContentType(contentTypeOfTheFileIJustLoaded);

有一些选项可用于查找文件的内容类型。看看下面的Stackoverflow问题:

Getting A File's Mime Type In Java