<a href="http://192.168.2.106:8080/file/pp.pdf">打开文件</a>通过这种方式可以打开,但却显示在整个页面中,如何调用本地的pdf程序打开呢?
解决方案 »
- 面试题 简述基于SSH1框架Web应用的工作流程
- 顶部横向滚动条带下面数据
- 面试中的mvc
- 有关http请求 的具体工作问题 大家帮我看看这样的流程对不对
- 自定义JSP标签
- 配置Struts tiles时报错: does not start with a "/" character
- sesison持久化,我在学习的时候有一个疑问,是不是在同一个应用里永远不会产生2个相同的sessionid
- 为什么jsp页面不能识别java输出的标签,求解答
- 为什么老说找不到数据源,刚学数据库,各位帮忙啊,要交作业啊
- 一张Jsp页面里内嵌了好几张Jsp页面,怎么去刷新指定的内嵌Jsp页面呢?
- 怎么把struts工程中properties文件中的ascii码转成中文或英文
- Quartz RMI
Microsoft Word文档,你就要将response对象的content类型设置成"application/msword ":
你只要将文件写到servlet的输出流中,就可以利用servlet在浏览器中打开一个文件。
首先从获得servlet的输出流开始:ServletOutputStream out= response.getOutputStream();
respost.setContentType("application/pdf ");
respose.setHeader( "Content-disposition", "attachment;filename=" +"pp.pdf");//别人下载时的文件名。完成上述工作后,剩下的就非常简单了。你需要根据待传送文件的名字,创建一个 java.net.URL 对象。交给 URL 构造器的字符串必须是指向该文件的一个有效 URL 地址。如: String fileURL = "http://192.168.2.106:8080/file/pp.pdf";
URL url = new URL(fileURL);
//*********************************************************
//如果需要通过防火墙,要考虑URL 链接
//*********************************************************
BufferedInputStream bis = new BufferedInputStream(url.openStream());
//完成上述操作,就只要简单地将 InputStream 中的字节,写入到 servlet 的输出流 OutputStream 中:
BufferedOutputStream bos = new BufferedOutputStream(response.getOutputStream());
byte[] buff = new byte[2048];
int bytesRead;
// Simple read/write loop.
while(-1 != (bytesRead = bis.read(buff,0,buff.length))){
bos.write(buff, 0, bytesRead);
}