文档介绍:java文件上传下载
文件上传在web应用中非常普遍,要在jsp环境中实现文件上传功能是非常容易的,因为网上有许多用java开发的文件上传组件,mons-fileupload组件为例,为jsp应用添加文件上传功能。
common-fileupload组件是apache的一个开源项目之一,可以从http://jakarta./commons/fileupload/下载。
用该组件可实现一次上传一个或多个文件,并可限制文件大小。
下载后解压zip包,将commons-fileupload--INFlib下,目录不存在请自建目录。
新建一个servlet: :
import .*;
import .*;
import .*;
import .*;
..*;
public class Upload extends HttpServlet {
private String uploadPath = "C:upload"; // 上传文件的目录
private String tempPath = "C:uploadtmp"; // 临时文件目录
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException
{
}
}
在doPost()方法中,当servlet收到浏览器发出的Post请求后,实现文件上传。以下是示例代码:
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException
{
try {
DiskFileUpload fu = new DiskFileUpload();
// 设置最大文件尺寸,这里是4MB
(4194304);
// 设置缓冲区大小,这里是4kb
(4096);
// 设置临时目录:
(tempPath);
// 得到所有的文件:
List fileItems = (request);
Iterator i = ();
// 依次处理每一个文件:
while(()) {
FileItem fi = (FileItem)();
// 获得文件名,这个文件名包括路径:
String fileName = ();
// 在这里可以记录用户和文件信息
// ...
// 写入文件,,可以从fileName中提取文件名:
(new File(uploadPath + ""));
}
}
catch(Exception e) {
// 可以跳转出错页面
}
}
如果要在配置文件中读取指定的上传文件夹,可以在init()方法中执行:
public void init() throws ServletException {
uploadPath = ....
tempPath = ....
// 文件夹不存在就自动创建:
if(!new File(uploadPath).isDirectory())
new File(uploadPath).mkdirs();
if(!new File(tempPath).isDirectory())
new File(tempPath).mkdirs();
}
编译该servlet,注意要指定classpath,mons-upload--。
配置servlet,用记事本打开tomcatwebapps你的webappWEB-,没有的话新建一个。
典型配置如下:
<?xml version="" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Applicati