Jquery Uploadify多文件上傳實例
阿新 • • 發佈:2017-06-14
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的代碼:
<scripttype="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多文件上傳實例