码迷,mamicode.com
首页 > 其他好文 > 详细

文件远程下载和查看

时间:2016-05-07 09:00:14      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:


最近公司要求做个传真的下载查看 由于之前未做过类似的远程直接下载到客户端,于是在网上找了相关资料,结果千篇一律,差不多都是你抄我我抄你的,都是服务器下载到服务端而不是直接服务器下载到用户浏览器端,研究了一天,写了个HTTP下载 和IIS远程查看 代码如下:

(一)前台:JS访问Servlet

//查看传真
showFile:function(time,num){
   window.open("/FaxServlet?creatTime="+time+"&faxnum="+num+"&tag=1", "_blank");
}
//下载传真
downloadFile:function(time,num){
  window.open("/FaxServlet?creatTime="+time+"&faxnum="+num+"&tag=2", "_blank");
}

(二)后台:servlet处理

1、首先通过读取配置文件 获取数据库地址

               Properties props = new Properties();

		InputStream fis = FaxServlet.class.getResourceAsStream("/jdbc.properties");

		props.load(fis);

		String servurl = props.getProperty("SQLServerjdbc.addr");
2、获取前台传递的数据

		

  		String creattime = request.getParameter("creatTime");

		String faxnum = request.getParameter("faxnum");
//tag标志 1为查看 2为下载
		String tag = request.getParameter("tag");

3、查询数据库获取需要查看或者下载的文件名 这块代码就省略了

4、对查看或下载进行操作

                    if (tag.equals("1")) {
                           //此处设置属性 inline的目的是为了设置文件在浏览器中打开
                response.setHeader("Content-Disposition", "inline; filename="
                        + filename);
                request.setAttribute("url_1", servurl + filename);
                request.getRequestDispatcher(jsp_url).forward(request, response);
            }
//下载
            if (tag.equals("2")) {

                URL url = new URL(servurl + filename);

                HttpURLConnection conn = (HttpURLConnection) url.openConnection();

                conn.connect();

                BufferedInputStream ins = new BufferedInputStream(conn.getInputStream());

                response.reset();
//设置以流的形式下载文件
                response.setContentType("application/octet-stream");
//设置 attachment 文件作为附件形式下载
                response.setHeader("Content-Disposition",
                        "attachment; filename=" + filename);

                int i;

                byte[] buffer = new byte[4 * 1024];

                while ((i = ins.read(buffer)) > 0) {

                    response.getOutputStream().write(buffer, 0, i);

                }

                ins.close();

                response.getOutputStream().close();

                conn.disconnect();

            }

5、查看传真时 需要判断是否有插件可以直接打开传真文件

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
//CLSSID是插件的ID 
<object width="100%" height="100%" id=obj1
	classid="CLSID:106E49CF-797A-11D2-81A2-00E02C015623">
	<param name=src value="<%=request.getAttribute("url_1") %>">
	<param name="mousemode" value="pan"/>
	<a href="/alternatiffx-1_8_2.zip">请下载插件</a>
</object>
<script type="text/javascript">
	if(document.all.obj1.object==null){
		alert("请下载插件");
		}
</script>



文件远程下载和查看

标签:

原文地址:http://blog.csdn.net/qq_28214879/article/details/51331671

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!