日期:2014-05-16  浏览次数:20454 次

JSP/Servlet图片或者文件简单上传

使用的是: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)

?