commons-fileupload 上传文件
上一篇 /
下一篇 2012-08-17 16:12:00
/ 个人分类:web
package cn.guang.servlet;
import java.io.*;
import java.util.*;
import org.apache.commons.fileupload.*;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import javax.servlet.*;
import javax.servlet.http.*;
import cn.guang.util.Config;
import cn.guang.media.Media;
import cn.guang.media.SqlMedia;
import cn.guang.util.DateFormat;
public class ServletUpload extends HttpServlet {
private static final long serialVersionUID = 1L;
Media media = null;
SqlMedia sqlMedia = null;
public void destroy() {
super.destroy();
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request,response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("GBK");
String action = request.getParameter("action");
String realPath = this.getServletContext().getRealPath("/").replace("\\","/");
String uploadPath=realPath + Config.configPath + action; //定义上传文件的地址
File folder = new File(uploadPath);
if(!folder.exists())
folder.mkdirs();
String message=null;
if(ServletFileUpload.isMultipartContent(request)){ //判断是否获取的是文件
DiskFileItemFactory disk=new DiskFileItemFactory();
disk.setSizeThreshold(20*1024); //设置内存可存字节数
disk.setRepository(disk.getRepository()); //设置临时文件目录
ServletFileUpload up=new ServletFileUpload(disk);
long maxsize=100*1024*1024;
List list=null;
try{
list=up.parseRequest(request); //获取上传列表
}
catch(Exception e){
e.printStackTrace();
}
Iterator i=list.iterator(); //创建列表的迭代器
while(i.hasNext()){
FileItem fm=(FileItem)i.next(); //遍历列表
if(!fm.isFormField()){
String fname=fm.getName(); //获取文件名包含后缀
String ext = "";//获取文件名后缀
int startIndex = fname.lastIndexOf(".");
if(startIndex!=-1){ //对文件名进行截取
ext = fname.substring(startIndex+1);
}else{
ext=fname;
}
String ldName = fname.substring(0,startIndex);//没有后缀的文件名字
String fileName = DateFormat.getRename(); //重命名后的新文件名
String fileLastName = fileName+"."+ext;//重命名后的新文件名+后缀
String sqlurl = action+"/"+fileLastName;
if (!ext.equals("zip")) {
message="只允许上传zip文件";
break;
}
if(fm.getSize()>maxsize){
message="文件太大了,不要超过100MB";
break;
}
String fileSize=new Long(fm.getSize()).toString()+"B";
if((fname==null)||(fname.equals(""))&&(fileSize.equals("0B"))){
message="文件名不能为空,文件大小也不能为零!";
break;
}
File saveFile=new File(uploadPath,fileLastName);
try{
fm.write(saveFile); //向文件中写入数据
message="文件上传成功!";
media.setAd(fileName);
media.setCustomer_id(action);
media.setAd_size(fileSize);
media.setAd_oldname(oldName);
media.setAd_path(sqlurl);
boolean isok = sqlMedia.uploadMedia(media);
if (isok) {
message="文件上传成功,保存数据成功!";
}else {
message="文件上传成功,但是保存数据库数据错误";
}
}
catch(Exception e1){
e1.printStackTrace();
}
}
}
}
request.setAttribute("result",message);
RequestDispatcher rd=request.getRequestDispatcher("/jsp/message.jsp");
rd.forward(request, response);
}
public void init(ServletConfig config) throws ServletException {
media = new Media();
sqlMedia = new SqlMedia();
super.init(config);
}
}
收藏
举报
TAG:
上传文件