jsp+servlet 实现文件夹中文件共享

  假如我想要共享在工程目录下的myfile文件夹中的文件,如:D:\apache-tomcat-6.0.16\webapps\day1213\myfile,可以这样用servlet+jsp技术实现。

jsp  名称为:DownloadDemo1.jsp ,源代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page  import="java.io.File" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    
    <title></title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	


  </head>
  
  <body>
    <%
     String path=  application.getRealPath("/myfile/");
    File file = new File(path);
     String[] test= file.list();
     for(int i=0;i<test.length;i++){
        out.println(i+1+"   ");
        out.println("<a href='http://localhost:8080/day1213/servlet/DownloadDemo1?name="+test[i]+"'>"+test[i]+"</a>"+"<br/>");
      %>
       
      <% 
     }
     %>
  </body>
</html>
servlet 名称为:DownloadDemo1.java,源代码如下:
package com.itheima.test;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.URLEncoder;

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

public class DownloadDemo1 extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
          String name=request.getParameter("name");
          name=new String(name.getBytes("ISO-8859-1"),"UTF-8");
//          System.out.println("参数为:"+name);
           String path=getServletContext().getRealPath("/myfile/"+name+"");
//           System.out.println("路径为:"+path);
     	  response.setHeader("Content-disposition", "attachment;filename="+URLEncoder.encode(name, "UTF-8"));
    	  InputStream is = new FileInputStream(path);
    	  OutputStream out = response.getOutputStream();
    	  
    	  int len=0;
    	  byte[] buf=new byte[1024];
    	  while((len=is.read(buf))!=-1){
    		  out.write(buf, 0, len);
    	  }
    	  out.close();
    	  is.close();
	}


	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

                  doGet(request,response);
	}

}

在ie浏览器中敲入地址:http://localhost:8080/day1213/DownloadDemo1.jsp

点击链接下载,就可以实现啦。


后记:

    在测试代码的时候,遇到如下一个问题,就是我不通过jsp发送请求,而是直接在ie浏览器中输入带有中文参数的地址,如:http://localhost:8080/day1213/servlet/DownloadDemo1?name=你好.txt     ,程序会报错,D:\apache-tomcat-6.0.16\webapps\day1213\myfile\???.txt (系统找不到指定的文件。)估计是直接发送过去,出现了编码问题,服务器识别不了。

后来,我改用jsp发送请求,发送地址为:http://localhost:8080/day1213/servlet/DownloadDemo1?name=你好.txt    程序正常执行。呵呵,这倒是蛮奇怪的!


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值