java实现动态上传多个文件并解决文件重名问题(转)
Posted FreeCoder
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java实现动态上传多个文件并解决文件重名问题(转)相关的知识,希望对你有一定的参考价值。
本文分为两大方面进行讲解:
一、java实现动态上传多个文件
二、解决文件重命名问题java
供大家参考,具体内容如下
1、动态上传多个文件
<script>
<
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
>
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>
遍历所有要上传的文件
2、解决文件的重名的问题
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多文件上传,解决了文件重名问题,希望对大家的学习有所帮助。
以上是关于java实现动态上传多个文件并解决文件重名问题(转)的主要内容,如果未能解决你的问题,请参考以下文章
java实现ftp文件上传下载,解决慢,中文乱码,多个文件下载等问题