try
{
if(ServletFileUpload.isMultipartContent(request))
{
DiskFileItemFactory dff = new DiskFileItemFactory();//创建该对象
dff.setRepository(tmpDir);//指定上传文件的临时目录
dff.setSizeThreshold(1024000);//指定在内存中缓存数据大小,单位为byte
ServletFileUpload sfu = new ServletFileUpload(dff);//创建该对象
//sfu.setSizeMax(5000000);//指定单个上传文件的最大尺寸
// sfu.setSizeMax(10000000);//指定一次上传多个文件的总尺寸
FileItemIterator fii = sfu.getItemIterator(request);//解析request 请求,并返回FileItemIterator集合
while(fii.hasNext())
{
FileItemStream fis = fii.next();//从集合中获得一个文件流
if(!fis.isFormField() && fis.getName().length()>0)
{//过滤掉表单中非文件域
String fileName = fis.getName();//获得上传文件的文件名
File file=new File(fileName);
fileName=file.getName();
BufferedInputStream in = new BufferedInputStream(fis.openStream());//获得文件输入流
//服务器文件保存路径=Main.homepath/uplaod/forum/attach/+年月+文件名
BufferedOutputStream outputStream = new BufferedOutputStream(new FileOutputStream(new File(saveDir.getPath()+"/"+fileName)));//获得文件输出流
Streams.copy(in, outputStream, true);//开始把文件写到你指定的上传文件夹
//保存文件名
String path="attach/"+TimeHelper.currentMonth() +"/" + fileName;
if(count >0)
{
filepath+="|"+path;
}else
{
filepath=path;
}
int num=Integer.parseInt( fis.getFieldName().substring(4,5));
tream[num]=path;
count++;
}
}
}
}
catch(Exception e)
{
e.printStackTrace();
out.print("<script>window.parent.document.getElementById('errorid').innerHTML = '文件上传错误,请重新上传';</script>");finally
{
//判断字符串长度
int valueLength = 0;
String chinese = "[\u0391-\uFFE5]";
for(int i=0;i<filepath.length(); i++)
{
String temp=filepath.substring(i,i+1);
if(temp.matches(chinese))
{
valueLength+=2;
}else{
valueLength+=1;
}
}
if(valueLength >100)
{
//提示信息
out.print("<script>window.parent.document.getElementById('errorid').innerHTML = '当前上传文件名太长,请重新上传';</script>");
}else
{
//返回每个上传文件值
for(int k=0;k<tream.length;k++)
{
out.print("<script>window.parent.document.getElementById('files"+ k +"').value = '"+ tream[k] +"';</script>");
}
//返回所有已上传文件路径
out.print("<script>window.parent.document.getElementById('filepath').value = '"+ filepath +"';</script>");
//提示信息
out.print("<script>window.parent.document.getElementById('errorid').innerHTML = '当前已上传"+ count +"个文件';</script>");
}
}
%>
}
{
if(ServletFileUpload.isMultipartContent(request))
{
DiskFileItemFactory dff = new DiskFileItemFactory();//创建该对象
dff.setRepository(tmpDir);//指定上传文件的临时目录
dff.setSizeThreshold(1024000);//指定在内存中缓存数据大小,单位为byte
ServletFileUpload sfu = new ServletFileUpload(dff);//创建该对象
//sfu.setSizeMax(5000000);//指定单个上传文件的最大尺寸
// sfu.setSizeMax(10000000);//指定一次上传多个文件的总尺寸
FileItemIterator fii = sfu.getItemIterator(request);//解析request 请求,并返回FileItemIterator集合
while(fii.hasNext())
{
FileItemStream fis = fii.next();//从集合中获得一个文件流
if(!fis.isFormField() && fis.getName().length()>0)
{//过滤掉表单中非文件域
String fileName = fis.getName();//获得上传文件的文件名
File file=new File(fileName);
fileName=file.getName();
BufferedInputStream in = new BufferedInputStream(fis.openStream());//获得文件输入流
//服务器文件保存路径=Main.homepath/uplaod/forum/attach/+年月+文件名
BufferedOutputStream outputStream = new BufferedOutputStream(new FileOutputStream(new File(saveDir.getPath()+"/"+fileName)));//获得文件输出流
Streams.copy(in, outputStream, true);//开始把文件写到你指定的上传文件夹
//保存文件名
String path="attach/"+TimeHelper.currentMonth() +"/" + fileName;
if(count >0)
{
filepath+="|"+path;
}else
{
filepath=path;
}
int num=Integer.parseInt( fis.getFieldName().substring(4,5));
tream[num]=path;
count++;
}
}
}
}
catch(Exception e)
{
e.printStackTrace();
out.print("<script>window.parent.document.getElementById('errorid').innerHTML = '文件上传错误,请重新上传';</script>");finally
{
//判断字符串长度
int valueLength = 0;
String chinese = "[\u0391-\uFFE5]";
for(int i=0;i<filepath.length(); i++)
{
String temp=filepath.substring(i,i+1);
if(temp.matches(chinese))
{
valueLength+=2;
}else{
valueLength+=1;
}
}
if(valueLength >100)
{
//提示信息
out.print("<script>window.parent.document.getElementById('errorid').innerHTML = '当前上传文件名太长,请重新上传';</script>");
}else
{
//返回每个上传文件值
for(int k=0;k<tream.length;k++)
{
out.print("<script>window.parent.document.getElementById('files"+ k +"').value = '"+ tream[k] +"';</script>");
}
//返回所有已上传文件路径
out.print("<script>window.parent.document.getElementById('filepath').value = '"+ filepath +"';</script>");
//提示信息
out.print("<script>window.parent.document.getElementById('errorid').innerHTML = '当前已上传"+ count +"个文件';</script>");
}
}
%>
}