<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();
}
}
}
1758

被折叠的 条评论
为什么被折叠?



