package cn.lnu.utils; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.util.Date; import java.util.List; import java.util.UUID; import javax.servlet.http.HttpServletRequest; import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUploadBase; import org.apache.commons.fileupload.FileUploadBase.FileSizeLimitExceededException; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import cn.lnu.domain.Upfile; public class WebUtils {//��������࣬ʵ�ִ����ļ��ϴ����󣬲����ϴ��ļ����浽pathĿ¼�£�Ȼ���ϴ����ļ����ظ�һ��Upfile���� public static Upfile doUpload(HttpServletRequest request,String uppath) throws FileSizeLimitExceededException{ Upfile bean=new Upfile();//�������ڷ�װ�ϴ��ļ���Ϣ��bean try{ DiskFileItemFactory factory=new DiskFileItemFactory();//����һ����������������� factory.setRepository(new File(request.getSession().getServletContext().getRealPath("/WEB-INF/temp")));//����ϴ��ļ����������ϴ��ļ��Ļ���Ŀ¼ ServletFileUpload upload=new ServletFileUpload(factory);//ʹ�ù�������һ���ļ��ϴ������� upload.setHeaderEncoding("UTF-8");//���һ���ϴ��ļ��������������� upload.setFileSizeMax(1024*1024*500);//�����ϴ��ļ������Ϊ500M���ļ�������׳�FileUploadBase.FileSizeLimitExceededException�쳣������쳣��Ҫ����ץȡ List<FileItem> list=upload.parseRequest(request); for( FileItem item:list){ if(item.isFormField()){//�������ͨ�ֶ� String name=item.getFieldName();//username=mushroom description=fhfhafahfahfa String value=item.getString("UTF-8"); System.out.println(name+"="+value); BeanUtils.copyProperty(bean, name, value);//ʹ��Beanutils����ͨ�ֶε����ֺ�ֵ��װ��bean�� }else{//�ϴ��������ֶ� //�õ��ϴ��ļ�������Ӧ���ݿ�realname�ֶ� String filename=item.getName().substring(item.getName().lastIndexOf("\\")+1); //�����ϴ��ļ�����1.txt������һ��Ψһ��uuid�ļ�������ֹ�ϴ����������е��ļ������ֳ�ͻ String uuidname=generateUidFileName(filename); //�õ��ļ��ı���·�� String savepath=generateSavePath(uppath,uuidname);//uppath���ϴ�Ŀ¼����󷵻صIJ��������ı���Ŀ¼ //Ȼ��ʼ���ϴ��ļ��������ɵı����ڷ������ϵı���Ŀ¼�� InputStream in=item.getInputStream(); int len=0; byte buffer[]=new byte[1024]; FileOutputStream out=new FileOutputStream(savepath+"\\"+uuidname); while((len=in.read(buffer))>0){ out.write(buffer, 0, len); } in.close(); out.close(); item.delete();//ɾ����ǰ�ϴ��ļ����ϴ��������ڻ���Ŀ¼�еĻ����ļ� bean.setRealname(filename); bean.setId(UUID.randomUUID().toString()); bean.setSavepath(savepath); bean.setUuidname(uuidname); bean.setUptime(new Date()); } } return bean; }catch(FileUploadBase.FileSizeLimitExceededException e){ throw e; }catch(Exception e){ throw new RuntimeException(e); } } private static String generateUidFileName(String filename){ String ext=filename.substring(filename.lastIndexOf(".")+1);//�õ��ϴ��ļ�����չ�� return UUID.randomUUID().toString()+"."+ext; } private static String generateSavePath(String path,String filename){//�����ļ���ʹ��hash�㷨������Ŀ¼��Ȼ����Щ��Ŀ¼�����ڴ��ݽ�����savepathĿ¼�� int hashcode=filename.hashCode();//�õ��ļ�������ַ����������ڴ��еĵ�ַ32λϵͳ����һ���ĸ��ֽڵ����� int dir1=hashcode&0xf;//�û��ļ�����ϣֵ�ĺ���λ��һ���ļ�Ŀ¼ int dir2=(hashcode>>4)&0xf;//�û��ļ�����ϣֵ������λ��ȥ����λ�������ļ�����Ŀ¼ //���ձ���Ŀ¼Ϊ�� String savepath=path+File.separator+dir1+File.separator+dir2; File file=new File(savepath);//���ڵ�һ���ϴ�ʱ�����Ŀ¼��û�д����ڴ��̣����Ա������ж�һ�£�û�д����Ļ����յ����� if(!file.exists()){ file.mkdirs();//�����Ƕ༶Ŀ¼������ʹ��mkdirs()������� } return savepath; } }