本文分为两大方面进行讲解:
一、java实现动态上传多个文件
二、解决文件重命名问题java
供大家参考,具体内容如下
1、动态上传多个文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
< form name = "xx" action="<c:url value = '/Up3Servlet' />" method="post" enctype="multipart/form-data">
< table id = "tb" border = "1" >
< tr >
< td >
File:
</ td >
< td >
< input type = "file" name = "file" >
< button onclick = "_del(this);" >删除</ button >
</ td >
</ tr >
</ table >
< br />
< input type = "button" onclick = "_submit();" value = "上传" >
< input onclick = "_add();" type = "button" value = "增加" >
</ form >
</ body >
< script type = "text/javascript" >
function _add(){
var tb = document.getElementById("tb");
//写入一行
var tr = tb.insertRow();
//写入列
var td = tr.insertCell();
//写入数据
td.innerHTML="File:";
//再声明一个新的td
var td2 = tr.insertCell();
//写入一个input
td2.innerHTML='< input type = "file" name = "file" />< button onclick = "_del(this);" >删除</ button >';
}
function _del(btn){
var tr = btn.parentNode.parentNode;
//alert(tr.tagName);
//获取tr在table中的下标
var index = tr.rowIndex;
//删除
var tb = document.getElementById("tb");
tb.deleteRow(index);
}
function _submit(){
//遍历所的有文件
var files = document.getElementsByName("file");
if(files.length==0){
alert("没有可以上传的文件");
return false;
}
for(var i=0;i< files.length ;i++){
if(files[i].value==""){
alert("第"+(i+1)+"个文件不能为空");
return false;
}
}
document.forms['xx'].submit();
}
</script>
</ html >
|
遍历所有要上传的文件
2、解决文件的重名的问题
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
package cn.hx.servlet;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.io.FileUtils;
public class UpImgServlet extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding( "UTF-8" );
String path = getServletContext().getRealPath( "/up" );
DiskFileItemFactory disk =
new DiskFileItemFactory( 1024 * 10 , new File( "d:/a" ));
ServletFileUpload up = new ServletFileUpload(disk);
try {
List<FileItem> list = up.parseRequest(request);
//只接收图片*.jpg-iamge/jpege.,bmp/imge/bmp,png,
List<String> imgs = new ArrayList<String>();
for (FileItem file :list){
if (file.getContentType().contains( "image/" )){
String fileName = file.getName();
fileName = fileName.substring(fileName.lastIndexOf( "\\" )+ 1 );
//获取扩展
String extName = fileName.substring(fileName.lastIndexOf( "." )); //.jpg
//UUID
String uuid = UUID.randomUUID().toString().replace( "-" , "" );
//新名称
String newName = uuid+extName; //在这里用UUID来生成新的文件夹名字,这样就不会导致重名
FileUtils.copyInputStreamToFile(file.getInputStream(),
new File(path+ "/" +newName));
//放到list
imgs.add(newName);
}
file.delete();
}
request.setAttribute( "imgs" ,imgs);
request.getRequestDispatcher( "/jsps/imgs.jsp" ).forward(request, response);
} catch (Exception e){
e.printStackTrace();
}
}
}
|
以上实现了java多文件上传,解决了文件重名问题,希望对大家的学习有所帮助。