Home 文章 Java基础 多文件上传

feedsky
抓虾
google reader
my yahoo
多文件上传 E-mail
User Rating: / 0
PoorBest 
作者是 Administrator   
2008-04-23 07:45:10

因为工作需要一个多文件上传,于是就在网上找了找,结果都是答案都是一样的,大同小异,几乎没有什么创新。所以自己就开始动手写一个,也许写的不是多么好,但是还可以用,哈哈~~~要是有什么建议,就是说出来,我们一起进步~~
好了,不说废话了,开始写程序~~
我用了Struts 1.1 但是不用提供的FormFile

1、HTML
<tr>
   <td align="left" width="120">
       上传文件:
  </td>        
  <td align="left" id="image">
  <input type="button" value="创  建  附  件" onclick="createfile();" />
<br> 
 <input type="file" id="imageFile" name="imageFile1" style="{cursor:hand}" />
</td>    
</tr>

javaScript

var i=1;
//添加附件
function createfile()
{
    i=i+1;
    var td=document.getElementById("image");
    var b=document.createElement("br");
    td.appendChild(b);
    var inp=document.createElement("input");
    inp.type="file";
    inp.size="40";
    inp.name="imageFile"+i;
    inp.id="imageFile";
    td.appendChild(inp);
}


2.ActionForm
其实只有filename这个属性就OK了。
public class ImageFile  extends ActionForm{
         
         private List filename;
    
    private List filesize;
    
    private List filelist;
         
         public List getFilename() {
        return filename;
    }

    public void setFilename(List filename) {
        this.filename = filename;
    }

    public List getFilesize() {
        return filesize;
    }

    public void setFilesize(List filesize) {
        this.filesize = filesize;
    }

    public List getFilelist() {
        return filelist;
    }

    public void setFilelist(List filelist) {
        this.filelist = filelist;
    }
}
3.ActionForward 

public ActionForward upload(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        ImageFile formbean = (ImageFile) form;
        // imagelist 存放文件的Byte[]数组
        List imagelist = new ArrayList();
        // namelist 来存放图片的名称
        List namelist = new ArrayList();
        // sizelist 来存放图片的大小
        List sizelist = new ArrayList();
        //重点就在这里
        Hashtable fileh = form.
                           getMultipartRequestHandler().getFileElements();
        String message=null;
        int keysize=0;
        // 解析上传文件
        for (Iterator it = 
                         fileh.keySet().iterator(); it.hasNext();)  {
            String key = (String) it.next();
            FormFile formfile = (FormFile) fileh.get(key);
            // 文件名
            String filename = formfile.getFileName().trim();
            // 重点结束
            if (filename.equals(""))  {
                keysize++;
                continue;   
            }         
            int j = filename.indexOf(".");
            String s = filename.substring(j, filename.length());
            if(s.equals(".tif")||s.equals(".jpg")||s.equals(".rmvb")||s.equals(".pdf")||s.equals(".avi"))
            {    
                //保存上传文件的名称
                namelist.add(filename);    
                int filesze = formfile.getFileSize();
                //保存上传文件的大小
                sizelist.add(filesze);
                //保存文件上传的字节数组
                imagelist.add(formfile);
                //保存在    formbean中                
                formbean.setFilename(namelist);
                formbean.setFilesize(sizelist);
                formbean.setFilelist(imagelist);
            }else{
                message=
            "上传文件格式不正确!请选择'jpg'.'tif'.'rmvb'.'pdf'.'avi'文件上传!";
                request.setAttribute("bean", formbean);
                request.setAttribute("message",message);
                return mapping.findForward("upload");
            }
        }
        if(keysize==fileh.size())
        {
            message="上传文件不能为空,请选择上传文件!";
            request.setAttribute("bean", formbean);
            request.setAttribute("message",message);
            return mapping.findForward("upload");
        }
        Session session = HibernateSessionFactory.currentSession();
        UploadServ serv = new UploadServ(session);
        message= serv.saveUploadFile(formbean,path);
        HibernateSessionFactory.closeSession();
        request.setAttribute("bean", formbean);
        request.setAttribute("message",message);    
        return mapping.findForward("upload");
    }
4.至于我的saveUploadFile()就是要处理的业务,返回一个String。就是message。

现在就完成了,请大家多多给意见~~~

最近更新 ( 2008-04-23 07:45:10 )
 
Java家,