这个功能只在servlet中用吗?难道写成个工具类就不可以吗?求指教!
在action中写了代码不执行。不知道什么原因。。

解决方案 »

  1.   

    贴代码。是common-fileupload?
    package com.rooyeetone.framework.util;import java.io.File;
    import java.io.UnsupportedEncodingException;
    import java.util.Date;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Map;import javax.servlet.http.HttpServletRequest;import org.apache.commons.fileupload.FileItem;
    import org.apache.commons.fileupload.disk.DiskFileItemFactory;
    import org.apache.commons.fileupload.servlet.ServletFileUpload;import com.rooyeetone.framework.WebManagerFactory;/**
     * @author <a href="mailto:[email protected]">amos zhou</a>
     * @Function:File upload 
     * @Since Apr 14, 2011
     *
     */
    public class FileUploadUtil { @SuppressWarnings("unchecked")
    public static Map<String,String> upload(HttpServletRequest request) throws Exception{
    DiskFileItemFactory factory = new DiskFileItemFactory();
    // the cache in memory
    factory.setSizeThreshold(UploadConfig.THRE_SHOLD);
    String loadPath = WebManagerFactory.getManager().getSession().getServletContext().getRealPath("/")+UploadConfig.FILE_SAVE_PAHT;

    File temp = new File(loadPath+"/temp");
    if(!temp.exists()){
    temp.mkdirs();
    }

    //file save repository
    factory.setRepository(new File(loadPath+"/temp"));
    ServletFileUpload upload = new ServletFileUpload(factory);
    upload.setSizeMax(UploadConfig.FILE_MAX_SIZE);
    List fileItems = upload.parseRequest(request);

    Iterator it = fileItems.iterator();
    Map<String,String> dataMap = new HashMap<String,String>();
    while(it.hasNext()){
    FileItem item = (FileItem) it.next();
    if(!item.isFormField()){
    processUploadFile(loadPath,item,dataMap);
    }else{
    processFormField(item,dataMap);
    }
    }
    return dataMap;

    }


    /**
     * 
     * @Function:handle  form field
     * @Since Apr 14, 2011
     * @param item
     * @param dataMap
     */
    private static void processFormField(FileItem item,Map<String,String> dataMap){
    String fieldName = null;
    String value = null;
    try {
    fieldName = item.getFieldName();
    value =  item.getString("UTF-8");
    } catch (UnsupportedEncodingException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    dataMap.put(fieldName, value);
    }


    /**
     * 
     * @Function:handle file upload
     * @Since Apr 14, 2011
     * @param loadPath
     * @param item
     * @throws Exception 
     * @throws Exception
     */
    private static void processUploadFile(String loadPath, FileItem item,Map<String,String> dataMap) throws Exception{
    String name = String.valueOf((new Date()).getTime());
    String fieldName = item.getFieldName();
    String tempName = item.getName();
    //don't upload file yet
    if(BlankUtil.isBlank(tempName)){
    return;
    }else{
    name = name + tempName.substring(tempName.indexOf("."));
    File newFile = new File(loadPath, name);
    item.write(newFile);
    dataMap.put(fieldName, UploadConfig.FILE_SAVE_PAHT+"/"+name);
    }

    }
    }
      

  2.   

    WebManagerFactory和。UploadConfig这俩类能提供下吗。多谢
      

  3.   

    代码我运行了。在action中调用这个工具类,然后代码运行到
    DiskFileItemFactory factory = new DiskFileItemFactory();
    这行的时候。我debug进去。然后程序在里面跑了一会后,不运行。这个是什么情况啊。也不报错。也不往下运行。难道我的jar包有问题?