JSP文件上传和下载

文件上传
首先要下载commons-fileupload.jar commons-io.jar包

  upfile.jsp
    <from action="upload" method="post" entype="multipart/form-data">
     上传照片<input type="file" name="photo" />
     <input type="submit" value="上传" />
    </from>

servlet

doget方式
  request.setCharacterEncoding("utf-8");
    response.setCharacterEncoding("utf-8);
    response.setContentType("text/html charset=utf-8");
    //上传
    boolean isMultipart = servletFileUpload.isMultipartContent(request);
    if(isMultipart){
        //判断前台form是否有multiparty
	FileItemFactory factory = new DiskFileItemFactory();
	ServletFileUpload upload = new ServletFileUpload(factory);
	//通过parseRequest解析form中的所有请求字段,并保存到items集合中
	List<FileItem> items = upload.parseRequest(request);
	Iteractor<FileItem> iter = items.iterator();
	while(item.hasNext()){
		FileItem item = iter.next();
		int sno = -1;
		String sname = null;
		//判断前端是普通字段还是文件字段
		if(item.isFormField()){
		if(item.getFiledName().equals("sno")){
		//根据name属性判断
		    sno=Integer.parseInt(item.getString());
		}else if(itemName.equals("sname")){
			system.out.println("utf-8");
		}else{
		    system.out.println("其他字段");
		}else{
		   String fileName = item.getName();
		   //获取文件内容并上传,定义文件路径,指定上传的位置
		   //动态获取服务器路径
		   String path = request.getSession().getServletContext().getRealPath();
		   File file = new File(path,fileName);
		   item.write(file);//上传
		   return;
		}
		}
	}
    }

下载
jsp

  <a href="DownloadServlet?filename=文件名"></a>

DownloadServlet

doget方式
reuqest.setCharacterEncoding("utf-8");
   //获取要下载的文件名
   String filename = request.getParameter("filename");
   response.addHeader("contentType",application/octet-stream);
   response.addHeader("contentType","attachement;filename-+"filename);
    InputStream in = request.getServletContext.getResourceAsStream("filename");
    ServletOutputStream out = resmponse.getOutputStream();
    byte[] bs = new byte[10];
    int len = -1;
    while((len=in.read(rs))!=-1){
	out.write(bs,0,len);
    }
    out.close();
注意:这里省略了抛异常的代码

下载时文件名乱码解决方法:

response.addHeader("contentType","attachement;filename-+"filename);
 IE浏览器
 加入URLEncoder.encode(filename,"utf-8");
 firefox
 给文件名加前缀=?,utf-8?B?
 String( Base64.encodeBase64(fileName.getBytes("utf-8")+  =?,utf-8?B?
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农先生eee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值