你可以用jspSmartUpload组件,这是一个可免费使用的全功能的文件上传下载组件,适于嵌入执行上传下载操作的JSP文件中。给你一个具体的例子:
1、上传页面upload.html 本页面提供表单,让用户选择要上传的文件,点击"上传"按钮执行上传操作。 页面源码如下: <!-- 
文件名:upload.html 
 
--> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
<head> 
<title>文件上传</title> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"> 
</head> <body> 
<p> </p> 
<p align="center">上传文件选择</p> 
<FORM METHOD="POST" ACTION="jsp/do_upload.jsp" 
ENCTYPE="multipart/form-data"> 
<input type="hidden" name="TEST" value="good"> 
<table width="75%" border="1" align="center"> 
<tr> 
<td><div align="center">1、 
<input type="FILE" name="FILE1" size="30"> 
</div></td> 
</tr> 
<tr> 
<td><div align="center">2、 
<input type="FILE" name="FILE2" size="30"> 
</div></td> 
</tr> 
<tr> 
<td><div align="center">3、 
<input type="FILE" name="FILE3" size="30"> 
</div></td> 
</tr> 
<tr> 
<td><div align="center">4、 
<input type="FILE" name="FILE4" size="30"> 
</div></td> 
</tr> 
<tr> 
<td><div align="center"> 
<input type="submit" name="Submit" value="上传它!"> 
</div></td> 
</tr> 
</table> 
</FORM> 
</body> 
</html> 2、上传处理页面do_upload.jsp 本页面执行文件上传操作。页面源码中详细介绍了上传方法的用法,在此不赘述了。 页面源码如下: <%-- 
文件名:do_upload.jsp --%> 
<%@ page contentType="text/html; charset=gb2312" language="java" 
import="java.util.*,com.jspsmart.upload.*" errorPage="" %> 
<html> 
<head> 
<title>文件上传处理页面</title> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"> 
</head> <body> 
<% 
// 新建一个SmartUpload对象 
SmartUpload su = new SmartUpload(); 
// 上传初始化 
su.initialize(pageContext); 
// 设定上传限制 
// 1.限制每个上传文件的最大长度。 
// su.setMaxFileSize(10000); 
// 2.限制总上传数据的长度。 
// su.setTotalMaxFileSize(20000); 
// 3.设定允许上传的文件(通过扩展名限制),仅允许doc,txt文件。 
// su.setAllowedFilesList("doc,txt"); 
// 4.设定禁止上传的文件(通过扩展名限制),禁止上传带有exe,bat, 
jsp,htm,html扩展名的文件和没有扩展名的文件。 
// su.setDeniedFilesList("exe,bat,jsp,htm,html,,"); 
// 上传文件 
su.upload(); 
// 将上传文件全部保存到指定目录 
int count = su.save("/upload"); 
out.println(count+"个文件上传成功!<br/>"); // 利用Request对象获取参数之值 
out.println("TEST="+su.getRequest().getParameter("TEST") 
+"<BR><BR>"); // 逐一提取上传文件信息,同时可保存文件。 
for (int i=0;i<su.getFiles().getCount();i++) 

com.jspsmart.upload.File file = su.getFiles().getFile(i); // 若文件不存在则继续 
if (file.isMissing()) continue; // 显示当前文件信息 
out.println("<TABLE BORDER=1>"); 
out.println("<TR><TD>表单项名(FieldName)</TD><TD>" 
+ file.getFieldName() + "</TD></TR>"); 
out.println("<TR><TD>文件长度(Size)</TD><TD>" + 
file.getSize() + "</TD></TR>"); 
out.println("<TR><TD>文件名(FileName)</TD><TD>" 
+ file.getFileName() + "</TD></TR>"); 
out.println("<TR><TD>文件扩展名(FileExt)</TD><TD>" 
+ file.getFileExt() + "</TD></TR>"); 
out.println("<TR><TD>文件全名(FilePathName)</TD><TD>" 
+ file.getFilePathName() + "</TD></TR>"); 
out.println("</TABLE><BR>"); // 将文件另存 
// file.saveAs("/upload/" + myFile.getFileName()); 
// 另存到以WEB应用程序的根目录为文件根目录的目录下 
// file.saveAs("/upload/" + myFile.getFileName(), 
su.SAVE_VIRTUAL); 
// 另存到操作系统的根目录为文件根目录的目录下 
// file.saveAs("c:\\temp\\" + myFile.getFileName(), 
su.SAVE_PHYSICAL); } 
%> 
</body> 
</html> 

解决方案 »

  1.   

    请问smartupload  将文件存在什么地方,能否在解释的详细点?
      

  2.   

    在上面的例子中是存到upload文件夹中了,你可以在你的项目文件夹下自己建一个upload文件夹我想请问一下 creater,有没有将文件名、路径等存入数据库的例子呀,能不能再给发一下?谢谢啦!
    我的E-mail:[email protected]
      

  3.   

    creater(寻常不见面,偶尔露狰狞!) 回答的很详细,up...
      

  4.   

    to: linda716() 
    有没有将文件名、路径等存入数据库的例子呀????
    --------------------------如果想保存到数据库中,服务器端的路径肯定是你自已事先知道(或事先在配置文件中设置好的) + myFile.getFileName(),这个在数据库表中加一个字段,把值写进去不就好了么?
    这个就是数据库操作部分,和文件上传无关了吧!
    最好建个专门写数据库的类,
    下面这个代码片断我把它们放到一起了public Connection conn;
      public Statement stmt;
      public PreparedStatement pstmt;
      public ResultSet rs;
    try {
          Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
          conn = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=db", "sa", "");
          stmt=conn.createStatement();
          stmt.executeUpdate("insert into yourtable(path) values(yourpath)");
          stmt.close();
          conn.close();
        }
        catch (Exception e) {
          e.printStackTrace();
        }
      

  5.   

    谁有jspSmartUpload呀,给我一份吧,
    [email protected]
    谢谢各位了
      

  6.   

    为什么全是jspsmartupload呢?你们上传的文件都多大?jspsmartupload这个玩意估计10M就不行了,还是用fileupload比较好。
      

  7.   

    我也试过jspsmartupload,确实可用,大家不妨用下。