使用的是:common-fileUpload 上传组件,把common-fileUpload .jar 引入web工程lib中;
下面的页面及处理上传的代码。
--------------------HTML--------------------
<body>
<form action="doPost.jsp" method="post" enctype="multipart/form-data">
<table style="text-align: center;">
<tr>
<td>
<input type="file" name="img">
</td>
</tr>
<tr>
<td>
<input type="submit" value="提交">
</td>
</tr>
</table>
</form>
</body>
注意:action 中添加 enctype="multipart/form-data">
--------------------action-----------------
我这里用的是doPost.jsp 作为servlet。因为jsp本是就是特殊的servlet。
<body>
<%
//得到上传的路径
String upload=request.getRealPath("/")+"upload";
String tempPath=request.getRealPath("/")+"tempPath";
//上传部分
DiskFileUpload fu = new DiskFileUpload();
// 设置最大文件尺寸,这里是4MB
fu.setSizeMax(4194304);
// 设置缓冲区大小,这里是4kb
fu.setSizeThreshold(4096);
// 设置临时目录:
fu.setRepositoryPath(tempPath);
// 得到所有的文件:
List fileItems = fu.parseRequest(request);
Iterator i = fileItems.iterator();
while(i.hasNext())
{
FileItem fi = (FileItem)i.next();
// 获得文件名,这个文件名包括路径:
String fileName = fi.getName();
//修改名字
int begin=fileName.lastIndexOf(".");
int end=fileName.length();
//得到文件后缀
String lastName=fileName.substring(begin,end);
//得到系统时间 和随机数
Date date=new Date();
SimpleDateFormat dFormat=new SimpleDateFormat("yyyyMMddhhmmss");
String mytime=dFormat.format(date);
Random rd=new Random(999999);
int num=rd.nextInt();
String newName=mytime+num+lastName;
if(fileName!=null) {
File file=new File(newName);
File saveFile=new File(upload,file.getName());
//把文件上传至目录中
fi.write(saveFile);
// 在这里可以记录用户和文件信息
// ...
// 写入文件a.jpg,你也可以从fileName中提取文件名:
//fi.write(new File(upload + "a.jpg"));
}
}
%>
</body>
特别说明:
1.项目添加了 common-fileUpload .jar
2. <form action="doPost.jsp" method="post" enctype="multipart/form-data">
3.处理上传的时候我把文件做了修改。思路是:系统时间和随机数+文件的后缀
(如:201109230837501622475814.jpg)