利用fileupload组件在项目中实现上传

1、上传页面 ,注意的两点,一是method要为post,二是enctype等于multipart/form-data

<form action="servlet/item/UploadItemServlet" method="post"
			enctype="multipart/form-data" name="form1">
			<input type="file" name="file">
			<input type="submit" name="Submit" value="upload">
</form>

2、servlet

public class UploadItemServlet extends HttpServlet {
	private String uploadPath = "D:\\"; // 用于存放上传文件的目录
	private File tempPath = new File("D:\\tmp\\"); // 用于存放临时文件的目录

	public void doPost(HttpServletRequest req, HttpServletResponse res)
			throws ServletException, IOException {
		//如果文件夹不存在就创建一个
		if(!tempPath.exists()){
			tempPath.mkdir();
		}
		
		DiskFileItemFactory factory = new DiskFileItemFactory();
		// setSizeThreshold方法用于设置是否将上传文件已临时文件的形式保存在磁盘的临界值(以字节为单位的int值),
		//如果从没有调用该方法设置此临界值,将会采用系统默认值10KB。对应的getSizeThreshold()方法用来获取此临界值。
		factory.setSizeThreshold(4096);
		System.getProperty("java.io.tmpdir");

		// setRepositoryPath方法用于设置当上传文件尺寸大于setSizeThreshold方法设置的临界值时,
		//将文件以临时文件形式保存在磁盘上的存放目录。有一个对应的获得临时文件夹的 File getRespository() 方法。
        //注意:当从没有调用此方法设置临时文件存储目录时,默认采用系统默认的临时文件路径,可以通过系统属性 java.io.tmpdir 获取
		factory.setRepository(tempPath);
		ServletFileUpload upload = new ServletFileUpload(factory);
		upload.setSizeMax(1024 * 1024 * 20);//设置最大上传20M
		List fileItems;
		try {
			fileItems = upload.parseRequest(req);
			for (Iterator iter = fileItems.iterator();iter.hasNext();) {
				FileItem item = (FileItem) iter.next();
				// 忽略其他不是文件域的所有表单信息
				if (!item.isFormField()) {
					String fileName = item.getName();
					long size = item.getSize();
					if ((fileName == null || fileName.equals("")) && size == 0)
						continue;
					//截取  F:\相册\2014\20140706_145414.jpg
					fileName = fileName.substring(fileName.lastIndexOf("\\")+1,fileName.length());
					item.write(new File(uploadPath + fileName));
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

3配置文件

<servlet>
		<servlet-name>UploadItemServlet</servlet-name>
		<servlet-class>com.study.drp.basedata.web.UploadItemServlet</servlet-class>
	</servlet>
	
	<servlet-mapping>
		<servlet-name>UploadItemServlet</servlet-name>
		<url-pattern>/servlet/item/UploadItemServlet</url-pattern>
	</servlet-mapping>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值