判断是否登陆然后从服务器下载一个文件

有很多文件我们需要从服务器上面下载到我们的电脑上面,下面是一个小demo


package controlor;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class dowload extends HttpServlet {
/**
 * 从服务器端下载一个文件
 * */
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		doPost(request, response);
	}

	
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
//		检查是否登录
		HttpSession session=request.getSession();
//		获取session并从中获取到登录时存入的值;qqq是我登录时存入session的登录名和密码
		 if(session.getAttribute("qqq")==null){
//			 如果获取到的值为空,那么跳转到登录页面
			 session.setAttribute("from", "dowload.jsp");
			 response.sendRedirect("index.jsp");
		 }else {
//			如果已经登录,则开始下载任务
		
//		获取从页面传过来的需要下载的文件名
		String fname=request.getParameter("fname");
		ServletContext application=this.getServletContext();
//		获取所要下载的文件的格式类型
		String mime=application.getMimeType(fname);
//		设置响应的类型格式
		response.setContentType(mime);
//		为响应的信息设置响应头,Content-Disposition表示以哪种形式进行响应;
//		attachment表示以附件的形式进行相应;filename=fname代表相应的文件
		response.setHeader("Content-Disposition", "attachment;filename="+fname);
//		将dowload文件夹的相对路径转换为绝对路径,需要被下载的文件都放在这个文件夹中
		String path=application.getRealPath("dowload");
//		构造输入字节流
		InputStream is= new FileInputStream(path+"/"+fname);
//		构造输出字节流
		OutputStream os= response.getOutputStream();
		byte[]arr=new byte[100];
		int len=0;
		while((len=is.read(arr))!=-1){
			os.write(arr,0,len);
		}
//		关闭输入输出流
		is.close();
		os.close();
	}
	}
	

}
我是把所有的需要下载的文件都放到了项目中的dowload文件及下了。上面的是servlet代码,下面的是jsp代码

<body>
  <h1>下载文件</h1>
  <ul>
  	<li> <a href="dowload?fname=pg3.jpg">下载图片</a> </li>
  	<li><a href="dowload?fname=sss.doc">下载文档</a></li>
  </ul>
   
     
  </body>
其中在jsp中进行传参数的时候最好不要是中文,因为有可能乱码。那么解决乱码的问题可以参考我的另一篇博客关于get请求乱码的问题


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值