1. 程式人生 > >Jquery Uploadify多文件上傳實例

Jquery Uploadify多文件上傳實例

hash factor param 項目 影響 face tex 上傳文件 button

jQuery Uploadify開發使用的語言是java。

詳細的相關文檔,可以參考官網的doc:http://www.uploadify.com/documentation/

官網的講解還是很詳細的,關鍵是要耐心看。雖說是英文,單有百度翻譯。

看官網jQuery uploadify有基於flash和html5 的2個版本。我使用的是基於flash的。

Jsp頁面引用的文件有:

<!-- 轉診單的附件商場頁面 -->
<script type="text/javascript" src="${ctx}/res/skin/default/js/jquery-1.8.3.min.js"></
script> <link rel="stylesheet" type="text/css" href="${ctx}/res/skin/default/plugin/uploadify/js/uploadify.css"> <script type="text/javascript" src="${ctx}/res/skin/default/plugin/uploadify/js/jquery.uploadify.min.js"></script>

關於這個引用的js和css文件,個人建議使用官網給出的版本。

相關的jQuery Uploadify的代碼:

<script 
type="text/javascript"> $(function() { $(#uploadify).uploadify({ auto : false,//是否選擇文件後就上傳,默認true。false有按鈕觸發 swf : ${ctx}/res/skin/default/plugin/uploadify/js/uploadify.swf,//引用的adobe flash player插件的文件 uploader : ${ctx}/ReferralInterface/saveAttachment?truntreatmentId=${truntreatmentId}
,//訪問後臺的處理方法的路徑${truntreatmentId}準備好的轉診單ID buttonText:選擇文件,//選擇文件按鈕的顯示文字 fileSizeLimit:10MB,//允許最大文件上傳的大小,可以是KB,MB,GB等。 queueID:fileQueue,//上傳文件的隊列存放dome的ID,一般為DIV multi:true,//設置adobe flash player插件一次選擇多個文件,默認為true。false一次選擇一個 queueSizeLimit:10,//隊列的demo中一次最大存放的文件數,不影響上傳的數量,demo為queueID的div uploadLimit:100,//可以上傳的最大文件數,超出觸發事件:onuploaderror fileTypeExts:*.png;*.jgp;*.pdf;*.doc;*.docx,//可以上傳的文件類型 onUploadSuccess:function(file,data,response){ //onUploadSuccess文件上傳成功的事件, //參數:file上傳文件的對象,data服務器返回的參數,response執行的狀態 //因為data返回的數據類型為string,所以使用eval函數轉換為json var json=eval("("+data+")"); $("#filelist").append("<tr><td>"+file.name+"</td><td><img src=‘${ctx}/res/skin/default/plugin/uploadify/image/cancel.png‘/></td><td>下載</td></tr>"); } }); }); </script>

相關的標簽代碼:

<input type="file" name="uploadify" id="uploadify" />
    <a href="javascript:$(‘#uploadify‘).uploadify(‘upload‘,‘*‘)">上傳</a>
    <div id="fileQueue"></div><br/>

註意:id="fileQueue"對應的是‘queueID‘:‘fileQueue‘. ${ctx}是el表達式設置的基礎路徑變量。

後臺代碼是基於spring mvc,後臺處理上傳的代碼:

/**
     * 保存附件
     * @param request
     * @param response
     * @throws ServletException
     * @throws IOException
     */
    @ResponseBody
    @RequestMapping(value="/saveAttachment")
    public Map<String,String> saveAttachment(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Map<String,String> map = new HashMap<String,String>();
        //轉診單ID
        String truntreatmentId=request.getParameter("truntreatmentId");
        request.setCharacterEncoding("utf-8");
        DiskFileItemFactory factory = new DiskFileItemFactory();
        @SuppressWarnings("deprecation")
        String path = request.getRealPath("/AttachmentUpload/"+truntreatmentId);
        //判斷文件夾是否存在不存在就創建文件夾
        File file=new File(path);
        if(!file.exists()){
            file.mkdir();
        }
        factory.setRepository(new File(path));
        factory.setSizeThreshold(1024 * 1024);
        ServletFileUpload upload = new ServletFileUpload(factory);
        try {
            // 可以上傳多個文件
            List<FileItem> list = (List<FileItem>) upload.parseRequest(request);
            
            for (FileItem item : list) {
                
                if (!item.isFormField()) {
                    String name = item.getName();
                    OutputStream out = new FileOutputStream(new File(path, name));
                    InputStream in = item.getInputStream();
                    int length = 0;
                    byte[] buf = new byte[1024];
                    while ((length = in.read(buf)) != -1) {
                        out.write(buf, 0, length);
                    }
                    in.close();
                    out.close();
                    //將附件的數據添加到數據庫下面部分代碼是針對我當前的項目,請不要作為參考,到break位置
                    /** 將上傳處理後的數據返回 **/
                    map.put("fileName", name);
                    
                    //實例化附件類
                    SAttachment sAttachment=new SAttachment();
                    
                    //文件的轉診單ID
                    sAttachment.settruntreatmentId(truntreatmentId);
                    //文件的名稱
                    sAttachment.setattachmentName(name);
                    //文件保存路徑
                    sAttachment.setattachmentUrl(path+"\\"+name);
                    sAttachment=referrallInterfaceService.saveSAttachment(sAttachment);
                    //獲取附件ID
                    map.put("attachmentId", sAttachment.getattachmentId());
                    //獲取附件的服務器保存路徑
                    map.put("attachmentUrl", sAttachment.getattachmentUrl());
                    break;
                
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("出錯了:" + e.getMessage());
        }
            
            return map;
    }

Jquery Uploadify多文件上傳實例