%@ page language="java" contentType="text/html; charset=GBK"
pageEncoding="GBK"
import="java.io.*"
import="java.util.*"
import="com.amarsoft.are.*"
import="org.apache.commons.fileupload.*"
import="org.apache.commons.fileupload.disk.*"
import="org.apache.commons.fileupload.servlet.*"
%>
上传文件
<%
if(FileUpload.isMultipartContent(request)){ //上传处理接收
DiskFileItemFactory factory = new DiskFileItemFactory(); //Create a factory for disk-based file items
factory.setSizeThreshold(102400); //大于100K的文件,需要缓冲
ServletFileUpload upload = new ServletFileUpload(factory);//Create a new file upload handler
upload.setSizeMax(-1); //Set overall request size constraint
List items = upload.parseRequest(request);
Iterator iter = items.iterator();
File saveTo = null;
//get folder
String folder = null;
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
if (!item.isFormField()) continue;
if (item.getFieldName().equals("folder")) {
folder = item.getString();
break;
}
}
if(folder==null){
out.println("上传文件的位置参数不正确!");
}else{
folder = java.net.URLDecoder.decode(folder,"GBK");
File fd = new File(folder);
if(!(fd.exists() && fd.isDirectory())){
out.println("上传文件的位置不存在!");
return;
}else{
//保存文件
iter = items.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
if (item.isFormField()) continue;
String fileName = item.getName();
//可以大胆的假定上传的文件都来自于windows系统,因此可以用\分割
String fn[] = fileName.split("\\\\");
fileName = fn[fn.length-1];
try{
saveTo = new File(fd,fileName);
item.write(saveTo);
}catch(Exception ex){
out.println("上传文件\""+fileName+"\"失败!");
out.println("错误原因:"+ex.getMessage());
}
break;
}
}
}
%>
上传文件"<%=saveTo.getName()%>"成功!
<%
}else{//非上传文件接收,显示文件浏览的画面
String folder = request.getParameter("folder");
if(folder==null){
out.println("上传文件的参数不正确!");
}else{
%>
请选择要上传的文件:
<%} %>
<%
}
%>