Uploadify上傳文件方法
Uploadify是JQuery的一個(gè)上傳插件,實(shí)現(xiàn)的效果非常不錯(cuò),帶進(jìn)度顯示。不過官方提供的實(shí)例時(shí)php版本的,本文將詳細(xì)介紹Uploadify在Aspnet中的使用,您也可以點(diǎn)擊下面的鏈接進(jìn)行演示或下載。
先給大家展示下效果圖:
修改:
報(bào)找不到uploadify-cancel.png文件。找到uploadify.css,找到.uploadify-queue-item .cancel a {,修改文件的路徑。
好多人都說,在chrome、Firefox上使用uploadify的時(shí)候獲取不到session導(dǎo)致上傳出錯(cuò)。需要手工將session id方法附加參數(shù)中。但是我這里并沒有這么做,并且在chrome、Firefox上傳沒問題,不知道為什么,也許是因?yàn)槲矣玫淖钚掳娴脑虬伞?/p>
要點(diǎn):
uploadify的js配置已經(jīng)比較全面,在實(shí)際使用的時(shí)候可以適當(dāng)?shù)膭h減一些方法和屬性。
一般情況下的單文件上傳只考慮onSelect、onUploadError和onUploadSuccess即可。
如果是多文件上傳,那么在單文件上傳的基礎(chǔ)上再加上對整個(gè)隊(duì)列的監(jiān)聽onQueueComplete。
開始上傳所有文件:$('#file_upload').uploadify('upload', '*');
取消上傳:$('#file_upload').uploadify('cancel', parm);
parm為空:取消上傳第一個(gè)文件。
parm為'*':取消所有的上傳文件。
parm為file id:取消該file id對應(yīng)的文件。
修改附加的一些變量:$('#file_upload').uploadify("settings","formData",{"name1":"中文name","parm1":"修改后的參數(shù)"});參數(shù)為json,如果該json中的某個(gè)變量已經(jīng)有了,那么覆蓋該屬性,如果沒有,那么追加該屬性。
服務(wù)端設(shè)置編碼為:upload.setHeaderEncoding("UTF-8");,這樣解析的文件名稱為正常中文。但是解析的附加變量中文亂碼,這里做一次轉(zhuǎn)碼(總感覺轉(zhuǎn)碼比較low,不知道是哪里配置的不對)。new String(item.getString().getBytes("iso8859-1"),"utf-8")
服務(wù)端最后返回文件保存路徑(這里可以隨便定義返回內(nèi)容)。
步驟:
配置uploadify
<%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%> <%String path = request.getContextPath();%> <%String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <base href="<%=basePath %>"> <title></title> <link rel="stylesheet" type="text/css" href="jquery-easyui-1.4.3/themes/default/easyui.css"> <link rel="stylesheet" type="text/css" href="jquery-easyui-1.4.3/themes/icon.css"> <script type="text/javascript" src="jquery-easyui-1.4.3/jquery.min.js"></script> <script type="text/javascript" src="jquery-easyui-1.4.3/jquery.easyui.min.js"></script> <script type="text/javascript" src="uploadify/uploadify/jquery.uploadify.min.js"></script> <link rel="stylesheet" type="text/css" href="uploadify/uploadify/uploadify.css" /> </head> <script> $(function(){ $(function() { $(function() { $('#file_upload').uploadify({ 'uploader' : '<%=basePath%>/UploadServlet',//服務(wù)端地址 'swf' : 'uploadify/uploadify/uploadify.swf', 'buttonImage' : 'uploadify/uploadify/img/chooseFile.jpg',//重載按鈕圖片 'buttonClass' : 'some-class',//重載按鈕樣式 'height':19,//按鈕寬度和高度 'width':76, 'queueID' : 'file_queue',//顯示文件隊(duì)列的一個(gè)div,在頁面定義 'formData' : {'parm1':'參數(shù)1','year':'2016'},//附加參數(shù),可以在upload參數(shù)中更改 'buttonText':'選擇文件',//按鈕顯示文字,如果有圖片的話,會(huì)被圖片擋住 'fileSizeLimit':'1MB',//文件最大 'auto':false,//自動(dòng)提交 'fileTypeExts' : '*.gif; *.jpg; *.png',//文件類型 'fileTypeDesc' : '只能上傳圖片',//選擇文件的時(shí)候的提示信息 'multi' : true,//多選 'queueSizeLimit' : 3,//隊(duì)列中文件的個(gè)數(shù) 'onSelect' : function(file) { console.log(file); alert("選擇文件:" + file.name + "\n類型="+file.type+"\n大小="+file.size); if(file.size>1024000){//文件太大,取消上傳該文件 alert("文件大小超過限制!"); $('#file_upload').uploadify('cancel',file.id); } }, 'onUploadSuccess' : function(file, data, response) { alert('每個(gè)文件上傳成功后觸發(fā) ' + file.name + ' was successfully uploaded with a response of ' + response + ':' + data); }, 'onUploadComplete' : function(file) { alert('每個(gè)文件上傳完成,無論對錯(cuò)都觸發(fā)! ' + file.name + ' finished processing.'); }, 'onUploadError' : function(file, errorCode, errorMsg, errorString) { alert('上傳出錯(cuò) ' + file.name + ' could not be uploaded: ' + errorString); }, 'onQueueComplete':function(queueData){ alert("隊(duì)列中的所有文件上傳完成后觸發(fā)。\n"+queueData.uploadsSuccessful+'\n'+queueData.uploadsErrored) }, }); }); }); }); function upload(){ $('#file_upload').uploadify("settings","formData",{"name1":"中文name","parm1":"修改后的參數(shù)"}); $('#file_upload').uploadify('upload', '*');//上傳所有文件 } function cancel(){ $('#file_upload').uploadify('cancel', '*');//取消所有文件 } function destroy(){ alert("取消upload上傳,變成原來樣式!"); $('#file_upload').uploadify('destroy');//destory } </script> <body> <div class="easyui-panel" title="說明" style="margin-bottom:15px"> </div> <div class="easyui-panel" style="text-align:center;margin-bottom:15px"> <a href="javascript:void(0)" class="easyui-linkbutton" onclick="upload()">開始上傳</a> <a href="javascript:void(0)" class="easyui-linkbutton" onclick="cancel()">取消上傳</a> <a href="javascript:void(0)" class="easyui-linkbutton" onclick="destroy()">destroy</a> <input type="file" name="file_upload" id="file_upload" /> <div id="file_queue" style="width:400px;height:10px;position:absolute;z-index:999"></div> </div> </body> </html>
服務(wù)端
package com.servlet; import java.io.File; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Iterator; import java.util.List; import java.util.UUID; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUploadException; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; /** * Servlet implementation class UploadServlet */ @WebServlet(name="UploadServlet",urlPatterns="/UploadServlet") public class UploadServlet extends HttpServlet { private static final long serialVersionUID = -6483558339095298703L; /** * @see HttpServlet#HttpServlet() */ public UploadServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.getWriter().append("Served at: ").append(request.getContextPath()); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("獲取session,可以根據(jù)這個(gè)session進(jìn)行一些其他的判斷" + request.getSession().getId()); SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd"); String remotePath = File.separator + "download" + File.separator + sdf.format(new Date()) + File.separator; String savePath = remotePath; File dfile = new File(savePath); if (!dfile.exists()) { dfile.mkdirs(); } DiskFileItemFactory fac = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(fac); upload.setHeaderEncoding("UTF-8"); List<FileItem> fileList = null; try { fileList = upload.parseRequest(request); } catch (FileUploadException ex) { return; } Iterator<FileItem> it = fileList.iterator(); String name = ""; String extName = ""; while (it.hasNext()) { FileItem item = it.next(); if (!item.isFormField()) { name = item.getName(); long size = item.getSize(); String type = item.getContentType(); System.out.println("文件=" + name + " " + size + " " + type); if (name == null || name.trim().equals("")) { continue; } // 擴(kuò)展名格式: 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); } catch (Exception e) { e.printStackTrace(); } }else if(item.isFormField()){ System.out.println("表單內(nèi)容:" + item.getFieldName() + "=" + new String(item.getString().getBytes("iso8859-1"),"utf-8")); } } String requestPath = remotePath + name + extName; request.getSession().setAttribute(requestPath, requestPath); response.getWriter().write(savePath + name + extName); } }
- jquery插件uploadify實(shí)現(xiàn)帶進(jìn)度條的文件批量上傳
- javascript實(shí)現(xiàn)uploadify上傳格式以及個(gè)數(shù)限制
- jquery插件uploadify多圖上傳功能實(shí)現(xiàn)代碼
- Jquery uploadify上傳插件使用詳解
- 解決ThinkPHP下使用上傳插件Uploadify瀏覽器firefox報(bào)302錯(cuò)誤的方法
- 解決jQuery上傳插件Uploadify出現(xiàn)Http Error 302錯(cuò)誤的方法
- JavaWeb實(shí)現(xiàn)文件上傳下載功能實(shí)例解析
- java中struts2實(shí)現(xiàn)文件上傳下載功能實(shí)例解析
- Java中FTPClient上傳中文目錄、中文文件名亂碼問題解決方法
- uploadify java實(shí)現(xiàn)多文件上傳和預(yù)覽
相關(guān)文章
用JavaScript實(shí)現(xiàn) 鐵甲無敵獎(jiǎng)門人 “開口中”猜數(shù)游戲
JavaScript在常人看來都是門出不了廳堂的小語言,僅管它沒有明星語言的閃耀,但至少網(wǎng)頁的閃耀還是需要它的,同時(shí)它是一門很實(shí)用的語言。2009-10-10原生JS實(shí)現(xiàn)隨機(jī)點(diǎn)名項(xiàng)目的實(shí)例代碼
這篇文章主要介紹了原生JS實(shí)現(xiàn)隨機(jī)點(diǎn)名項(xiàng)目的實(shí)例代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2019-04-04await/async無法捕獲與處理錯(cuò)誤信息的解決方案分享
async await 中添加錯(cuò)誤處理個(gè)人認(rèn)為是有必要的,下面這篇文章主要給大家介紹了關(guān)于await/async無法捕獲與處理錯(cuò)誤信息的解決方案,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-02-02webpack中CommonsChunkPlugin詳細(xì)教程(小結(jié))
本篇文章主要介紹了webpack中CommonsChunkPlugin詳細(xì)教程(小結(jié)),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-11-11functional繼承模式 摘自javascript:the good parts
javascript:the good parts 書中Inheritance部分講到了一種functional的繼承方式, 具體這個(gè)functional該如何翻譯,就不是很清楚了, 就直接意會(huì)一下吧2011-06-06