首先下载jar文件包,在apache的官网上。
第一个包Commons IO 2.0 地址:http://commons.apache.org/io/
第二个包FileUpload 1.2.1 地址:http://commons.apache.org/fileupload/download_fileupload.cgi
可以下载zip的包 解压后将里面的jar包放到你的工程lib中。
然后建立一个fileupload的servlet 代码如下:
import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class FileUpload extends HttpServlet { public FileUpload() { super(); } public void destroy() { super.destroy(); } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } public void init() throws ServletException { } }
然后在doPost方法中编写文件上传代码。
if(ServletFileUpload.isMultipartContent(request)){
DiskFileItemFactory dfif = new DiskFileItemFactory();
//以byte为单位设定文件使用多少内存量后,将文件存入临时存储
dfif.setSizeThreshold( 5 * 1024 * 1024);
//设定临时文件的存储路径
dfif.setRepository(new File("c:\\temp"));
//创建一个ServletFileUpload类的对象
ServletFileUpload servletfileupload = new ServletFileUpload(dfif);
//设定最大允许上传50M的文件
servletfileupload.setSizeMax(50*1024*1024);
//使用ServletFileUpload类的parseRequest方法返回整个表单的所有FileItem项的列表
try {
List<FileItem> files = servletfileupload.parseRequest(request);
for(FileItem f:files){
if(f.isFormField()){ //如果该项是表单项,不是文件上传项
out.println(f.getFieldName());
out.println(f.getString("UTF-8")); //因为Web使用是的UTF-8编码,所以客户端返回的也是UTF-8的编码。
}else{
String filename = f.getName();
filename = filename.substring(filename.lastIndexOf("."));
try {
f.write(new File("c:\\upfile\\" + (int)(Math.random()*10000000) + filename));
} catch (Exception e) {
e.printStackTrace();
}
}
}
} catch (FileUploadException e) {
e.printStackTrace();
}
out.print("OK");
}
else{
out.print("您所提交的表单有错误!");
}
在doGet方法中调用this.doPost方法就行了,如this.doPost(request,response);
接下来编写上传文件页面的form
注意 :表单的enctype属性必须设置为multipart/form-data"
接下来配置servlet:
在站点的web—INF文件夹里的web.xml中加入
<servlet> <servlet-name>Upload</servlet-name> <servlet-class>Upload</servlet-class> </servlet> <servlet-mapping> <servlet-name>Upload</servlet-name> <url-pattern>/fileupload</url-pattern> </servlet-mapping>
放在最后以行上面。
OK大功告成~~可以试试上传了~~