使用ServletFileUpload实现上传

本文详细介绍了如何使用ServletFileUpload组件实现文件上传功能,包括文件存放位置设定、文件大小限制设定、文件解析与存储过程。通过实例代码演示了上传文件的处理流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用ServletFileUpload实现上传

 转载自http://blog.youkuaiyun.com/zsw2zkl/article/details/7426007

1.首先我们应该为上传的文件建一个存放的位置,一般位置分为临时和真是文件夹,那我们就需要获取这俩个文件夹的绝对路径,在servlet中我们可以这样做

  1. ServletContext application = this.getServletContext(); 
  2. String tempDirectory = application.getRealPath(Constant.TEMP_DIRECTORY) + "/"
  3. String realDirectory = application.getRealPath(Constant.REAL_DIRECTORY) + "/"
		ServletContext application = this.getServletContext();
		String tempDirectory = application.getRealPath(Constant.TEMP_DIRECTORY) + "/";
		String realDirectory = application.getRealPath(Constant.REAL_DIRECTORY) + "/";

然后建立文件工厂即仓库一个参数表示存放多大后flush,

  1. FileItemFactory factory = new DiskFileItemFactory(Constant.SIZE_THRESHOLD,new File(tempDirectory)); 
  2. ServletFileUpload upload = new ServletFileUpload(factory); 
		FileItemFactory factory = new DiskFileItemFactory(Constant.SIZE_THRESHOLD,new File(tempDirectory));
		ServletFileUpload upload = new ServletFileUpload(factory);
2.对上传的文件进行设定

  1. upload.setSizeMax(500*1024*1024);//设置该次上传最大值为500M 
		upload.setSizeMax(500*1024*1024);//设置该次上传最大值为500M
3,.解析请求正文,获取上传文件,不抛出异常则写入真是路径

  1. List<FileItem> list = upload.parseRequest(request); 
  2.             Iterator<FileItem> iter = list.iterator(); 
  3.             while (iter.hasNext()) { 
  4.                 FileItem item = iter.next(); 
  5.                 //item.isFormField()用来判断当前对象是否是file表单域的数据  如果返回值是true说明不是 就是普通表单域 
  6.                 if(item.isFormField()){ 
  7.                     System.out.println( "普通表单域" +item.getFieldName()); 
  8.                     System.out.println(item.getString("utf-8")); 
  9.  
  10.                 }else
  11.                     //System.out.println("file表单域" + item.getFieldName()); 
  12.                     /*
  13.                      * 只有file表单域才将该对象中的内容写到真实文件夹中
  14.                      */ 
  15.                     String lastpath = item.getName();//获取上传文件的名称 
  16.                     lastpath = lastpath.substring(lastpath.lastIndexOf(".")); 
  17.                     String filename = UUID.randomUUID().toString().replace("-", "") + lastpath; 
  18.                     item.write(new File(realDirectory+filename)); 
List<FileItem> list = upload.parseRequest(request);
			Iterator<FileItem> iter = list.iterator();
			while (iter.hasNext()) {
				FileItem item = iter.next();
				//item.isFormField()用来判断当前对象是否是file表单域的数据  如果返回值是true说明不是 就是普通表单域
				if(item.isFormField()){
					System.out.println( "普通表单域" +item.getFieldName());
					System.out.println(item.getString("utf-8"));

				}else{
					//System.out.println("file表单域" + item.getFieldName());
					/*
					 * 只有file表单域才将该对象中的内容写到真实文件夹中 
					 */
					String lastpath = item.getName();//获取上传文件的名称
					lastpath = lastpath.substring(lastpath.lastIndexOf("."));
					String filename = UUID.randomUUID().toString().replace("-", "") + lastpath;
					item.write(new File(realDirectory+filename));





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值