commons_fileupload凌晨学习笔记

来源:互联网 发布:俄语拼写检查软件 编辑:程序博客网 时间:2024/05/08 11:24
发表时间:2005年12月25日 3时4分 [%=@count%]票 [[%=@percent%]%]
提交
commons_fileupload是一个开源的文件上传组件
下面说说它的用法
先要到http://archive.apache.org/dist/jakarta/commons/下载两个包commons-fileupload和commons-io解压所有jar到tomcat的common/lib下
启动tomcat就可用了

下面是我的调试例子(网上抄来改的:))
test1.html
--------------------------
<html>
<head>
<title>File Upload</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head><body bgcolor="#FFFFFF" text="#000000">
<p><font size="5"color="#FF0000">
<b>第七章 文件上传范例</b>
</font></p>
<form name="Form1" enctype="multipart/form-data" method="post" action="getUpload.jsp">
<p>上传文件 1: <input type="file"name="File1" size="20" maxlength="20"> </p>
<p>文件1叙述: <input type="text" name="File1" size="30" maxlength="50"> </p>
<p>上传文件 2: <input type="file" name="File2" size="20" maxlength="20"> </p>
<p>文件2叙述: <input type="text" name="File2" size="30" maxlength="50"> </p>
<p>上传文件3: <input type="file" name="File3" size="20" maxlength="20"> </p>
<p>文件3叙述: <input type="text" name="File3" size="30" maxlength="50"> </p>
<p> <input type="submit"value="上传"> <input type="reset" value="清除"> </p>
</form>
</body>
</html>

getUpload.jsp
----------------------
<%@ page contentType="text/html;charset=gb2312" language="java" %>
<%@ page import="java.io.*" %><%@ page import="java.util.*" %>
<%@ page import="org.apache.commons.fileupload.*" %>
<%@ page import="org.apache.commons.io.*" %>
<%  // 申明将上传文件放到服务器的 / .... /upload 目录中
String saveDirectory = "f:////upload//";    // 申明临时目录
String tmpDirectory = "f:////temp";    // 申明限制上传文件总大小为, 单位为 byte, -1 表示无限制 
int maxPostSize = 1024 * 1024; %>
<%    // 申明储存叙述上传文件内容的变量    
String FileDescription = null;     // 申明储存上传文件名称的变量
String FileName = null;    // 申明储存上传文件大小的变量
long FileSize = 0;    // 申明储存上传文件类型的变量
String ContentType = null;    // 计算上传文件之个数
int count = 0 ;%>
<%
DiskFileUpload upload = new DiskFileUpload(); // 设置内存存放数据的大小, 超过则写入文件, 有设定临时目录, 临时文件置于临时目录下   
upload.setSizeThreshold(4096);        // 设置总上传大小限制 
upload.setSizeMax(maxPostSize);        // 设置临时目录
upload.setRepositoryPath(tmpDirectory);  
List items = upload.parseRequest(request);%>
<body>
<%
Iterator iter = items.iterator(); 
int tmp = 0;
FileItem tmpItem = null;
while (iter.hasNext())  {  
tmp++;    
FileItem item = (FileItem) iter.next();
if (item.isFormField()) { 
// 如果是一般栏位, 取得文件叙述
FileDescription = item.getString(); 
} else {  
// 否则取得文件信息
FileName = item.getName();
// 因为不同的浏览器会造成传递 path + filename, 有些则只有
try {   // for wintel platform
FileName = FileName.substring(FileName.lastIndexOf("////")+1);  // for unix-like platform
FileName = FileName.substring(FileName.lastIndexOf("//")+1);  
} catch (Exception ex ) { }

ContentType = item.getContentType();
FileSize = item.getSize();   
tmpItem = item; 
}      
// 因为一个文件都是两个栏位, 每读取两个栏位处理一次
if (tmp == 2 && FileSize != 0)
{  
count ++;%>
<font color="red">
你上传的第<%= count %>个的文件:</font>
<br>文件名称为:<%= FileName %>
<br>文件大小为:<%= FileSize %> Bytes
<br>文件类型为:<%= ContentType %>
<br>文件的叙述:<%= saveDirectory + FileName %>
<br><br>
<%   
// 将文件写入存档目录 
try { 
//out.println(FileName);  
File uploadedFile = new File(saveDirectory + FileName); 
tmpItem.write(uploadedFile); 
} catch ( Exception ex ){}  
tmp = 0;   
} else if (
  tmp == 2 && FileSize == 0) {
  tmp = 0;
}
} // end while
%>
您总共上传<font color="red"><%= count %></font>个文件
</body>
</html>