jspSmartUpload--文件上传与下载组件的应用----文件上传、下载、删除

转载 2012年04月29日 23:27:06

一、安装与配置:将文件放到对于的包下;

二、主要类:1、File类:用于保存单个上传文件的相关信息,如上传文件的文件名、文件大小、文件数据等。

2、Files类:存储了所有上传的文件,通过类中的方法可获得上传文件的数量和总长度等信息。

3、Request类:因为当Form表单用来实现文件上传时,通过JSP的内置对象request的getParameter()方法无法获取其他表单项的值,所以提供了该类来获取。

4、SmartUpload类:用于实现文件的上传与下载操作。

把这个经典的smartUpload包放到src下合适的位置。

然后在页面中调用类的相关方法就可以了。

------uploadmanager.jsp-------------这个页面是提交页面,from表单提交-

<%@ page contentType="text/html;charset=gb2312" %>
<%@ page import="java.sql.*"%>
<%@ page import="grad.util.course.*"%>
<%@ page session="true" %>
<html>
<head><title></title>
<script language="javascript">
function doCheck(){
    if(upload.title.value==""){
      alert("请填写资源标题!");
      upload.title.focus();
      return false;
    }
    else if(upload.file.value==""){
      alert("请选择上传文件!");
      upload.file.focus();
      return false;
    }
    else if(upload.courseid.value=="0"){
      alert("请选择资源所属课程");
      upload.courseid.focus();
      return false;
    }
    else
      return true;
}
</script>
</head>
<body>
<%
if(((String)session.getAttribute("user_id")!=null)||((String)session.getAttribute("type")!="2")){
String auser_id=(String)session.getAttribute("user_id");
%>
<form name="upload" method="post" action="../uploadfile.jsp" enctype="multipart/form-data" onsubmit="return doCheck()">
<table cellpadding="0" cellspacing="0" width="90%">
   <tr><td height="30" colspan=2 class=TableTitle2><span class="STYLE1">上传新资源:</span></td></tr>
   <tr><td height="25" align="right"><strong>资源标题:</strong></td>
       <td width="85%"><input type="text" name="title" size="30" ></td>
   </tr>
   <tr><td width="15%" height="25" align="right"><strong>文件:</strong></td>
       <td><input type="file" name="file" SIZE="20"></td>
   </tr>
   <tr><td width="15%" height="25" align="right"><strong>资源所属课程:</strong></td>
       <td><select name="courseid" size="1">
             <option value="0"></option>
        <%
            op_courseInfo opc=new op_courseInfo();
            ResultSet rs2=opc.getAllCoursenameByTeaid(auser_id);
            while(rs2.next()){
        %>
             <option value="<%=rs2.getString("课程号") %>"><%=rs2.getString("课程名")%></option>
        <%   
           }
        %>
         </select>
     </td>
</tr>
<tr><td>用户下载权限:</td><td>
         <select name="power" size="1">
            <option value="0" selected>不允许学生下载该资源</option>
            <option value="1">允许学生下载</option>
         </select>
     </td>
</tr>
<tr><td>&nbsp;</td><td><input type="submit" value="上传" name="submit" />&nbsp;&nbsp;&nbsp;&nbsp;
        <input type="reset" value="重置" name="reset"/>
</td></tr>
<tr><td>
     <input type="hidden" name="userid" value="<%=auser_id %>"/>
     </td></tr>
</table>  
</form>
<%
}
else{
out.print("你还没有登录或者没有权限进入,请<a href=../index.jsp target=_parent>返回首页登录</a>");
}
%>
</body>
</html>

*******uploadfile.jsp*****这个是处理提交的页面,由该页面实现文件的上传

<%@ page contentType="text/html;charset=gb2312" language="java" %>
<%@ page import="com.jspsmart.upload.*" %>
<%@ page import="grad.util.course.op_resourse" %>
<jsp:useBean id="mySmartUpload" scope="page" class="com.jspsmart.upload.SmartUpload" />
<jsp:useBean id="dbConn" class="grad.util.DBConn"></jsp:useBean>

<html>
<head>
    <title>updatepassword2</title>
   </head>
<body>
<hr size="1" width="100%">
<p>
<%
//定义目标目录
String destination="/ziliaojia/";
long maxsize=50*1024*1024;
try{
mySmartUpload.initialize(pageContext);    
mySmartUpload.setMaxFileSize(maxsize);     //设置每个上传文件的大小,最大为50M
mySmartUpload.setDeniedFilesList("exe,,bat,ini,tmp");//不允许上传的文件的扩展名
//文件上传
mySmartUpload.upload();
SmartFiles files=mySmartUpload.getFiles(); //获得所有的上传文件
//上传的情况统计
for (int i=0;i<files.getCount();i++){
   SmartFile myFile = mySmartUpload.getFiles().getFile(i);
   if (!myFile.isMissing()){
     //获得表单的内容
       String title = mySmartUpload.getRequest().getParameter("title"); //资源标题
       String acourseid=mySmartUpload.getRequest().getParameter("courseid");//资源所属课程号
       String csid = mySmartUpload.getRequest().getParameter("userid"); //资源发布人
       java.text.SimpleDateFormat dateFormat = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //获得系统当前时间,并将其格式化为yyyy-MM-dd HH:mm:ss   
       String anowdate= dateFormat.format(new java.util.Date(System.currentTimeMillis()));
       String spower=mySmartUpload.getRequest().getParameter("power"); //用户下载权限
       op_resourse opr=new op_resourse();
       int autoid=opr.getMaxId();//为了防止中文问题,把文件都以编号作为文件名
       String sname=autoid+"."+myFile.getFileExt();
       String sql="insert into 资源表(资源标题,资源名称,文件类型,后缀名,资源大小,资源发布人,资源所属课程号,资源权限,发布时间)values('"+title+"','"+sname+"','"+myFile.getContentType()+"','"+myFile.getFileExt()+"',"+myFile.getSize()+",'"+csid+"','"+acourseid+"','"+spower+"','"+anowdate+"')";
       boolean num=dbConn.executeSql(sql);
       if(num){
         myFile.saveAs(destination+sname,SmartFile.SAVEAS_VIRTUAL);
         out.println("文件上传成功!"+ "<BR>");
         out.println("文件名称= " + myFile.getFileName() + "<BR>");
         out.println("文件大小= " + myFile.getSize() + " Byte<BR>");
         out.println("文件扩展名= " + myFile.getFileExt() + "<BR>");
         out.println("文件路径名= " + myFile.getFilePathName() + "<BR>");
         out.println("文件类型= " + myFile.getContentType() + "<BR>");        
       }
       else if(!num){
         out.println("出错了,请检查输入!");
       }
    }//if (!myFile.isMissing()){
}//for (int i=0;i<files.getCount();i++){
}catch(Exception e){
   request.setAttribute("errors","文件上传失败!");
   e.printStackTrace();
}
out.println("<BR><a href=javascript:onclick=history.go(-1)>返回</a><BR>");
%>
</p>
</body>
</html>

需要注意的地方:

1、在form表单页面,表单的method属性必须为post,并且必须设置enctype="myltipart/form-date"属性,<input type="file">标记实现的表单元素可用来选择文件,通过上面的属性设置后,Form表单中通用的表单元素如<input type="text">,在表单提交后,通过JSP的request内置的getParameter()方法将无法获取其值,可应用jspSmartUpload组件提供的Request类中的getParameter()方法获取。

2、创建接受表单,进行上传的jsp文件,在该jsp文件中调用jspSmartUpload组件进行文件上传。将文件上传到服务器,并且将文件的信息存储到了数据库中,如文件的实际名称,上传到服务器进行存储的文件名和文件类型等信息。所以,这里不能直接调用SmartUpload类的save()方法将上传的所有文件存储到服务器中,而应逐个获取以jspSmartUpload组件中的File类表示的单个文件,然后获取当前文件的相应信息并存储在数据库中,最好调用Files类的saveAs()方法保存文件。

3、实现文件下载:。通过“下载”连接进入dodown.jsp页面,在该页面调用jspSmartUpload组件进行文件下载。<a href="dodown.jsp?downfile=<%=filesave%>">下载</a>

-----------dodown.jsp----------------------页面关键代码

<%@ page contentType="text/html;charset=gb2312" %>
<jsp:useBean id="mydown" class="com.jspsmart.upload.SmartUpload"></jsp:useBean>

<%
String adownfile=request.getParameter("downfile");
String filepath="webapps/netteaching/ziliaojia/";
String downfile=filepath+adownfile;
try{
   response.reset();
   out.clear();
   out=pageContext.pushBody();
   mydown.initialize(pageContext);
   mydown.setContentDisposition(null);
   mydown.downloadFile(downfile);
}catch(Exception e){
   String errors="<li>文件下载失败,请重新下载!</li>";
   request.setAttribute("errors",errors);
   RequestDispatcher rd=request.getRequestDispatcher("fileManager.jsp");
   rd.forward(request,response);
}
%>

注意:在SmartUpload类用于下载文件的downloadFile()方法中,最终通过response.getOutputStream().write()方法将要下载的文件数据写入到相应客户的输出流提供给用户进行下载,所以还要编写如下代码:

response.reset();

out.clear();

out=pageContext.pushBody();

否则,将抛出下面的异常:getOutputStream() has already been called for this response

4、删除文件:filedelete.jsp

<%@ page contentType="text/html;charset=gb2312" %>
<%@ page import="java.io.*"%>
<%@ page import="grad.util.course.op_resourse" %>
<%@ page session="true" %>
<html>
<head>
    <title>fileDeleteSubmit</title>
</head>
<body>
<%
    //删除资源
    int rsid=Integer.parseInt(request.getParameter("ID"));
    String sfile=request.getParameter("filename");
    op_resourse opr=new op_resourse();
    boolean bol=opr.delResourse(rsid); //删除表中记录
    if(bol){
      out.println("删除成功!");
    }
    String filepath="webapps/netteaching/ziliaojia/";
    String fullfile=filepath+sfile;
    File f=new File(fullfile);
    boolean bol2=f.delete();   //删除对应的文件
    if(bol2){
       out.println("删除文件成功");
    }
   
    response.setHeader("Refresh","1; URL=fileManager.jsp");//1秒后自动跳转页面
%>

</body>
</html>

使用jspSmartUpload组件进行文件上传、下载

jspSmartUpload组件是一个可以免费使用的文件上传与下载组件。用户可以把他安装在web服务器上,再进行使用。        jspSmartUpload组件使用非常简单。在jsp文件中仅需...
  • u013310119
  • u013310119
  • 2016年04月14日 22:13
  • 1425

【Jsp】使用jspsmartupload完成简单的文件上传系统

请不要妄想,一个html的file控件,再加上javascript与jquery语句就可以完成文件上传, 文件上传系统从来是需要配合服务器来完成的 用户把自己的文件上传到服务器上 文件上传系统是...
  • yongh701
  • yongh701
  • 2014年12月15日 10:31
  • 7735

菜鸟学习之smartupload+servlet简单的文件上传

创建工程后首先需要导入包 jsp-api.jar jspsmartupload.jar servlet-api.jar 将这三个包放入web-inf 下的lib中 然后就可以开始编写...
  • zxtutuai
  • zxtutuai
  • 2016年04月05日 18:56
  • 2068

用jspSmartUpload组件实现文件上传、下载

jspSmartUpload组件,可从http://download.csdn.net/user/dearchuansir下载,压缩包的名字是jspSmartUpload.zip。下载后,将其解压到T...
  • layman1024
  • layman1024
  • 2017年05月31日 10:41
  • 261

使用jspSmartUpload组件进行文件上传、下载

jspSmartUpload组件是一个可以免费使用的文件上传与下载组件。用户可以把他安装在web服务器上,再进行使用。        jspSmartUpload组件使用非常简单。在jsp文件中仅需...
  • u013310119
  • u013310119
  • 2016年04月14日 22:13
  • 1425

jspsmartupload实现文件上传与下载

  • 2011年04月08日 20:52
  • 1.28MB
  • 下载

理论---jsp使用jspsmartupload组件实现文件上传功能

开始 需要使用的jar包 commons-fileupload-1.2.1.jar commons-io-1.3.2.jar mysql-connector-java-5.1.42-bin.ja...
  • sinat_37746700
  • sinat_37746700
  • 2017年05月15日 15:29
  • 191

asp无组件文件上传---下载不扣分,回帖加1分,欢迎下载,童叟无欺

  • 2009年12月08日 21:14
  • 377KB
  • 下载

文件上传与下载组件

  • 2013年12月10日 17:18
  • 42KB
  • 下载

解决asp无组件文件上传及下载大小限制

  • 2014年09月19日 00:28
  • 664B
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:jspSmartUpload--文件上传与下载组件的应用----文件上传、下载、删除
举报原因:
原因补充:

(最多只允许输入30个字)