Uploadify jsp使用示例

    uploadfiy这个插件是基于js里面的jquery库写的。结合了ajax和flash,实现了这个多线程上传的功能。
    现在最新版为3.2.
    下面里例子是3.1,部分上传代码使用了自己的封装好的类与方法,jsp中大致上使用方式差不多。
 
    1.解压资源包,将以下文件拷贝到项目资源文件夹里。
 
      
    2.表单的引用(更多的参数:查看
<!--Jquery-->
<script type="text/javascript" src="linkey/bpm/easyui/jquery.min.js"></script>
<!--FileUpload-->
<link rel="stylesheet" href="linkey/oa/uploadify/uploadify.css" type="text/css"></link>
<script type="text/javascript" src="linkey/oa/uploadify/jquery.uploadify-3.1.min.js"></script>
<script>

$(function() {
    //加载上传附件控件
    $("#uploadify").uploadify({  
        'height'        : 18,   
        'width'         : 60,    
        'buttonText'    : '浏 览',  
        'swf'           : 'linkey/oa/uploadify/uploadify.swf',  
        'uploader'      : 'rule?wf_num=R_Mail_B002&DocUnid='+WF_DocUnid,  
        'auto'          : true,
        'onUploadStart' : function(file){
            //开始上传..
            mask();
        },
        'onUploadSuccess':function(file) {  
            //上传成功后处理
            unmask();
        }
    });
    
});
</script>
<body>
    <table>
        <tr>
            <td style="word-break: break-all;" valign="middle">
                附件
            </td>
            <td valign="middle">
                <div id="fileQueue"></div>
                <p>
                    <input id="uploadify" name="uploadify" type="file"/>
                </p>
            </td>
        </tr>
    </table>
</body>

    3.上传处理程序

package cn.linkey.rulelib.Mail;

import java.util.*;import java.io.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.*;
import org.apache.commons.fileupload.disk.*;
import org.apache.commons.fileupload.servlet.*;
/**
 * @RuleName:上传邮件附件
 * @author  admin
 * @version: 8.0
 */
final public class R_Mail_B002 {
    @Override
    public String run(HashMap<String, Object> params) throws Exception  {
        //params为运行本规则时所传入的参数
        HttpServletRequest request = BeanCtx.getRequest();
        String DocUnid = BeanCtx.g("DocUnid");
        String name = "";       //随机文件名称
        String fileName = "";   //文件原始名称
        String extName = "";    //扩展名
        
        //上传文件目录(以月份+Userid为目录)
        String PATH = "/uploads/"+DateUtil.getNow("yyyyMM")+"/"+BeanCtx.getUserid()+"/";
        String savePath = request.getServletContext().getRealPath(""); //this.getServletConfig().getServletContext().getRealPath("");
        
        savePath = savePath + PATH;
        File f1 = new File(savePath);
        if (!f1.exists()) {
            f1.mkdirs();
        }
        DiskFileItemFactory fac = new DiskFileItemFactory();
        ServletFileUpload upload = new ServletFileUpload(fac);
        upload.setHeaderEncoding("utf-8");
        List fileList = null;
        try {
            fileList = upload.parseRequest(request);
        } catch (FileUploadException ex) {
            return "";
        }
        Iterator<FileItem> it = fileList.iterator();
        
        while (it.hasNext()) {
            FileItem item = it.next();
            if (!item.isFormField()) {
                name = item.getName();
                fileName = name;
                String sizeUnit = "KB";
                long size = 0;
                if(item.getSize()>1024*1024*1024){
                    size = item.getSize()/1024/1024/1024;
                    sizeUnit = "GB";
                }else if(item.getSize()>1024*1024){
                    size = item.getSize()/1024/1024;
                    sizeUnit = "MB";
                }else{
                    size = item.getSize()/1024;
                }
                String type = item.getContentType();
                if (name == null || name.trim().equals("")) {
                    continue;
                }
    
                // 扩展名格式:
                if (name.lastIndexOf(".") >= 0) {
                    extName = name.substring(name.lastIndexOf("."));
                }
                File file = null;
                do {
                    // 生成文件名:
                    name = UUID.randomUUID().toString();
                    file = new File(savePath + name + extName);
                } while (file.exists());
    
                File saveFile = new File(savePath + name + extName);
                try {
                    item.write(saveFile);
                    SaveFileInfo(DocUnid,PATH,fileName,size+sizeUnit,name+extName);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
        return "";
    }
    
    //保存附件信息到邮箱附件表
    public void SaveFileInfo(String docUnid,String filePath,String fileName,String fileSize,String fileRandomUUID){
        Document nDoc = new Document("Mail_Attachments");
        nDoc.s("DocUnid",docUnid);
        nDoc.s("FilePath",filePath);
        nDoc.s("FileName",fileName);
        nDoc.s("FileSize",fileSize);
        nDoc.s("FileRandomUUID",fileRandomUUID);
        nDoc.save();
    }
}

     

 

posted @ 2015-01-06 20:52  去海边吧  阅读(290)  评论(0编辑  收藏  举报