java上传文件

<html>
	<head>
		<title>Upload File (Using commons-fileupload-1.2.2.jar tool)</title>
	</head>
	<body>
		<center>
			<h1>
				File Upload
			</h1>
			<form name="uploadform" method="post" action="uploadfile"
				ENCTYPE="multipart/form-data">
				<!-- 上传文件的表单中,必须有ENCTYPE="multipart/form-dat"属性,才可以实现RFC1867协议 -->
				<table border="1" width="450" cellpadding="4" cellspacing="2"
					bordercolor="#9BD7FF">
					<tr>
						<td width="100%" colspan="2">
							File:
							<input name="file" size="40" type="file" />
						</td>
					</tr>
					<tr>
						<td align="center">
							<input name="upload" type="submit" value="Upload" />
						</td>
					</tr>
				</table>
			</form>
		</center>
	</body>
</html>

 

public class UploadFile extends HttpServlet{	// 使用 commons-fileupload-1.2.2.jar+commons-io-2.0.1.jar工具实现文件上传功能

	private static final long serialVersionUID = 1L;
	
	public void doPost(HttpServletRequest request, HttpServletResponse response){
		ServletOutputStream out = null;
		try {
			out = response.getOutputStream();
		
			boolean isMultipart = ServletFileUpload.isMultipartContent(request);	// .isMultipartContent(request)的作用是:判断请求消息中的内容是否是“multipart/form-data”类型。
			if(isMultipart) {
				DiskFileItemFactory factory = new DiskFileItemFactory(1024*4, new File("d:/data"));		// 创建磁盘工厂,利用构造器实现内存数据存储量和临时存储路径
				//factory.setSizeThreshold(4096);	// 设置最多只允许在内存中存储的数据(单位:字节)
				//factory.setRepository(new File("d:/data"));	// 设置文件临时存储路径
				ServletFileUpload upload = new ServletFileUpload(factory);
				upload.setHeaderEncoding("UTF-8");
				upload.setSizeMax(1024*1024*100);	// 设置允许用户上传文件大小(单位:字节)
				/*	
				try {		// 解析请求 
					Iterator<FileItem> iter = (Iterator<FileItem>)upload.getItemIterator(request); // 
				} catch (FileUploadException e) {
					e.printStackTrace();
				} catch (IOException e) {
					e.printStackTrace();
				}*/
				List<FileItem> fileItems = upload.parseRequest(request);	// 得到所有的表单域
				Iterator<FileItem> iter = fileItems.iterator();
				while(iter.hasNext()) {
				FileItem item = (FileItem)iter.next();
					if(item.isFormField()) {
						String name = item.getFieldName();
						String value = item.getString("UTF-8");
						out.println("FormFieldName is :" + name + " and value is:" + value + "<br>");
					}else{
						String fileName = item.getName();
						if(fileName != null) {
							File fullFile = new File(item.getName());
							File fileOnServer = new File("D:/data/data/" + fullFile.getName());			// 设置上传路径和文件名
							item.write(fileOnServer);
							out.println("File:" + fileOnServer.getName()+ "upload complete<br>");
						}
					}
				}
				out.println("Success to UploadFile !<br>");
				return;
			}
			out.println("Fail to UploadFile<br>");
		} catch (FileUploadException e) {
			e.printStackTrace();
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}catch (IOException e1) {
			e1.printStackTrace();
		}catch (Exception e) {
			e.printStackTrace();
		}
	}
}


 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值