您的位置:首页 > 其它

利用commons-fileupload实现文件上传

2009-10-25 21:58 615 查看
本来想自己实现文件上传的,但是这需要对流进行分析,我就先用了Apache Commons组件实现。因为这段时间很忙,只好等过一段时间好好研究下,自己实现一个不依赖于第三方jar包的文件上传。

  用了fileuploa组件后,文件上传简单多了。这里采用Servlet实现文件上传,用到的第三方组建就只有一个fileupload和commos-io,commons-io是fileupload要用到的包.

1.处理上传操作的Servlet--FileUploadApache

package fileupload;
import java.io.File;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
public class FileUploadApache extends HttpServlet {
private static final long serialVersionUID = 1L;
private static final String REPOSITORY= "/home/zxj/apache/";

public FileUploadApache() {
super();
}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}

@SuppressWarnings("unchecked")
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletFileUpload sfu = new ServletFileUpload();
try {
List<FileItem> li = sfu.parseRequest(request);
for(int i = 0; i < li.size(); i ++){
FileItem fi = li.get(i);
if("uploadFile".equals(fi.getFieldName())){
fi.write(new File(REPOSITORY+fi.getName()));
}
}
} catch (FileUploadException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}


2.web.xml的配置

<servlet>
<description>利用commons-fileupload包辅助完成文件上传</description>
<display-name>FileUploadApache</display-name>
<servlet-name>FileUploadApache</servlet-name>
<servlet-class>fileupload.FileUploadApache</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FileUploadApache</servlet-name>
<url-pattern>/FileUploadApache</url-pattern>
</servlet-mapping>


3.upload-view.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>文件上传</title>
<mce:script type="text/javascript"><!--
function doupload(submitbutton){
var name = submitbutton.name;
var form = document.getElementById("fileupload");
form.action = name;
form.submit;
}
// --></mce:script>
</head>
<body>
<center>
实现文件上传
<form action="#" method="post" enctype="multipart/form-data" name="fileupload" id="fileupload">
文件<input type="file" name="uploadFile">
<br/>
<input type="submit" value="上传" onclick="doupload(this)" name="FileUploadNoDependency" title="无第三方依赖文件上传" style=" width : 48px;" mce_style=" width : 48px;">
<br/><input type="submit" value="上传" onclick="doupload(this)" name="FileUploadApache" title="利用commons-fileupload包辅助完成文件上传">
</form>
<hr/>
</center>
</body>
</html>


说明:这里有两个按钮,一个是采用Apache包,一个是不依赖,不依赖我还没实现,也是暂时还不想实现。

4.部署到Tomcat或其他Web容器就可以通过浏览器访问了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: