使用commons-fileupload与commons-io进行文件上传

时间:2022-08-30 00:18:57
使用commons-fileupload与commons-io进行文件上传

第一步:相关组件的下载
1、 commons-fileupload下载: http://commons.apache.org/fileupload/download_fileupload.cgi
2、 commons-io下载: http://commons.apache.org/io/download_io.cgi

第二步:解压到相应的位置
1、 commons-fileupload的目录:
F:\Program Files\commons-fileupload-1.2.2\lib\commons-fileupload-1.2.2.jar
2、 commons-io的目录:
F:\Program Files\commons-io-2.4\commons-io-2.4.jar
第三步:在自己的项目下引入相关的jar包
WEB-INF――lib目录下引入上面的两个包
第四步:编写文件处理的jsp程序
<%@ page import="org.apache.commons.fileupload.*"%>
<%@ page import="org.apache.commons.fileupload.servlet.*"%>
<%@ page import="org.apache.commons.fileupload.disk.*"%>
<%@ page import="java.util.*"%>
<%@ page import="java.io.*"%>

<%
String uploadPath = "D:\\eclipse_java_ Programs\\Shopping\\WebContent\\images\\product";
//检查输入请求是否为multipart表单数据。
boolean isMultipart = ServletFileUpload.isMultipartContent(request);

if(isMultipart==true){
try{
//为该请求创建一个DiskFileItemFactory对象,通过它来解析请求。执行解析后,所有的表单项目都保存在一个List中。
FileItemFactory factory = new DiskFileItemFactory();

ServletFileUpload upload = new ServletFileUpload(factory);
List<FileItem> items = upload.parseRequest(request);//得到所有的文件
Iterator<FileItem> itr = items.iterator();
int id = -1;
while(itr.hasNext()){//依次处理每个文件
FileItem item = (FileItem)itr.next();
//先对非文件类型的内容进行处理
if(item.isFormField()) {
//getFieldName()方法获得非文件类型内容的属性名称
if(item.getFieldName().equals("id")) {
//getString()方法获得其相应的属性值
id = Integer.parseInt(item.getString());
}
}

if(!item.isFormField()) {
String fileName = item.getName();//获得文件名,包括路径
if(fileName != null){
File fullFile = new File(id + ".jpg");
File savedFile = new File(uploadPath, fullFile.getName());
item.write(savedFile);
}
}
}
out.print("upload succeed");
}
catch(Exception e){
e.printStackTrace();
}
}
else{
out.println("the enctype must be multipart/form-data");
}
%>

第五步:文件上传的界面
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>File upload</title>
<style type="text/css">
table {
border-collapse: collapse;
border:1px solid red;
}
table td {
background:pink;
border:1px solid red;
padding: 3px;
}
</style>
</head>
<body>
<!-- 必须是multipart的表单数据。 -->
<form name="myform" action="uploaddeal.jsp" method="post"
enctype="multipart/form-data">
<input type="hidden" name="id" value="<%=id%>" />
<table>
<tr>
<td>File:</td>
<td><input type="file" name="myfile"></td>
</tr>
<tr>
<td colspan="2"><input type="submit" name="submit" value="Commit"></td>
</tr>
</table>
</form>
</body>
</html>

相关文章