下载案例

下载案例

遍历上传目录下的所有文件显示给用户,并允许用户完成下载

 

ListFileServlet------listfiles.jsp------DownloadServlet.java

 

varinput=document.createElement("input");

              input.name="file";

              input.type="file";

 

上面三句话相当于

<input name="file"type="file"/>

 

ListFileServlet把指定文件夹及其子文件夹下的所有文件封装到list集合中,每个文件对应一个file文件-----存入到一个作用域范围之内

主要功能:读取某一个文件夹下的所有的文件---list对象----存入request作用域范围内

 

public class ListFileServlet extends HttpServlet {

              //将某一个文件夹下的文件获取到,然后存入到Map类型的集合中  key(文件加了UUID之后的文件名--uuidname)-----value(每一个文件所对应的file对象)

              //把Map对象存入到作用域

       publicvoid doGet(HttpServletRequest request, HttpServletResponse response)

       throwsServletException, IOException {

              //得到保存上传文件的文件夹

              StringsavePath=this.getServletContext().getRealPath("WEB-INF/upload");

              Mapmap=new HashMap();

              listFiles(newFile(savePath),map);

              request.setAttribute("map",map);

              request.getRequestDispatcher("/listfiles.jsp").forward(request,response);

       }

//通过递归方法去遍历该文件夹下的所有文件及子文件夹下的文件,把文件存入到map中

       privatevoid listFiles(File file, Map map) {

                     //TODO Auto-generated method stub

              //File[]files=file.listFiles()      创建一个file数组,把文件存储到这个数组中,用递归遍历所有文件

              if(file.isFile()){//判断file是文件还是文件夹

                     //如果是文件

                     Stringuuidname=file.getName();

                     Stringrealname=uuidname.substring(uuidname.indexOf("_")+1);//得到真实名称,把uuid截取掉

                     map.put(uuidname,realname);

              }else{

                     //如果是文件夹,迭代处理

                     File[]files=file.listFiles();//得到文件夹下地所有文件

                     for(Filef:files){

                            listFiles(f,map);

                     }

              }

       }

       publicvoid doPost(HttpServletRequest request, HttpServletResponse response)

                     throwsServletException, IOException {

              doGet(request,response);

       }

}

 

listfiles.jsp

列出所有子资源(可下载资源),将所有的文件列表显示

 

  <h2>下载资源列表</h2>

  <c:forEach items="${map}"var="me">

    <c:url value="/servlet/DownloadServlet" var="fileAddr">

       <c:param name="filename"value="${me.key }"></c:param>

    </c:url>

    文件名:${me.value}&nbsp;&nbsp;  <a href="${fileAddr }">下载</a><br/>

 </c:forEach>

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值