jsp中利用apache的commens-fileupload包进行文件上传

首先下载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大功告成~~可以试试上传了~~

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值