用Jsp实现本地文件共享及下载

阅读更多
本文作者:海怪。欢迎转载。但敬请注明出处。
Java.io包给我们提供了一个File类。借此类我们可以轻松地完成文件的列表获取文件信息等。
这里我以一个简单的音乐网站为例子,说明本地文件共享及提供下载的Jsp解决方法。
整个网站仅有两个页面,一个是logo.jsp,是页面的头部,一个是 index.jsp,负责完百所有文件列表显示等工作的。
下面是logo.jsp的代码:
 
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>


Wellcome to my music house





 
   
 
 
   
 
  <%
  String rl=null;
  if(url!=null)
  rl=url;
  else rl="";
  rl=rl.replace('\\','>');
   %>
   
 
你的位置:首页>><%=rl%>
 

logo.jsp没涉及到关键的技术,只是提供了进入几个文件夹的链接及鼠标指向链接图片时的特效。用到Javascript。
 
而重头戏则是index.jsp:
为说明方便,我在代码中用不同色的文字说明。
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.io.*" import="java.lang.*" import="java.util.Date" errorPage="" %>


Wellcome to my music house


<%! File file=null; %>
<%String url=request.getParameter("URL");    //整个页面靠一个参数来传递信息,URL存放的其实是本地文件的相对路径!
     String path="";                                        //“path”参数是用来构造文件的路径参数。
     String title="";                                         
     session.setMaxInactiveInterval(-1);          //使用了Session来保存一个常量initpath,在这里把session的生命期设为无限,防止出现超时现象。
     String inipath="G:\\my music\\";              //该应用的context,作为常量驻于Session中。它与URL参数加进来就是一个文件的完整路径
     session.setAttribute("Path",inipath);
    if (url==null)
   {
    path="G:\\my music\\";
    title="海之音乐世界";
   }
    else
   {url=new String(url.getBytes("ISO-8859-1"),"gb2312");   //URL参数有可能是中文参数,通过内码转换来解决该问题
   path=session.getAttribute("Path")+url+"\\";
  if(url.lastIndexOf(" \\")!=-1)
  title=url.substring(url.lastIndexOf(" \\")+1);
 else title=url;
 }
 file=new File(path);                                                         //建立起一个文件实例
File[] files=file.listFiles();                                                  //该文件是个目录,列出其下的文件
%>
<%@ include file="logo.jsp"%>

<%=title %>


 
 
 
 
 
 
  <%for(int i=0;i {
 Date date=new Date(files[i].lastModified());
 String lstmdfy=String.valueOf(date.getYear()+1900)+"年"+String.valueOf(date.getMonth()+1)+"月"+String.valueOf(date.getDate())+"日";
  if(files[i].isDirectory()&&!files[i].isHidden())
  out.println("
");
 if(!files[i].isDirectory()&&!files[i].isHidden())
out.println("");
}
%>
//上面那段代码是关键,但相信不难看。各位不明白的可以发问,我邮箱就在下面。呵呵
 
文件 修改时间 类型 下载
"+files[i].getName()+""+lstmdfy+"目录"+"打开
"+files[i].getName()+""+lstmdfy+"文件"+"下载

 

海怪的Jsp之家^_^


Copyright:[email protected]



 


本系统是个简单但功能却较强大的。当然要另外架设一个FTP的服务器哦。
要不下载的时候可能出现文件直接在IE中打开的问题。
仍存在的问题是如果文件名混着此例如'这样的符号或者.这样的字符时会出错。待解决。
各位如果需要应用,可以仅改变initpath的参数和URL为空值是的path变量的值就可以用到你的机子上了。
当然logo里面的链接你自行改咯。


你可能感兴趣的:(JSP,音乐,JavaScript,CSS,IE)