jQuery無刷新上傳之uploadify簡單代碼
先簡單的侃兩句:貌似已經(jīng)有兩個月的時間沒有寫過文章了,不過仍會像以前那樣每天至少有一至兩個小時是泡在園子里看各位大神的文章。前些天在研究“ajax無刷新上傳”方面的一些插件,用SWFUpload實現(xiàn)了無刷新上傳的功能,不過個人覺得不是很完美。
昨天在網(wǎng)上找到了一個叫做uploadify的jquery上傳插件,看到園子里有幾篇文章也是介紹這個插件的,心想何不用這個試試。
不過園子里的這幾篇文章用到的uploadify還是以前的舊版本uploadify-v2.1.0,我在官網(wǎng)上下載的是uploadify-v3.1版,其中的一些參數(shù)以及調(diào)用方法也不同了,還好官網(wǎng)有幫助文檔。
(唯一感覺不爽的一點就是這個開發(fā)包是針對php的,官網(wǎng)并沒有.NET版本,但至少原理都是一樣的,簡單的修改一下就可以了。還是那句話“不僅要知其然,還要知其所以然”,知其所以然了,一切都是浮云?。?/p>
好了,廢話不多說。先上個效果圖,有圖有真相:
一:從官網(wǎng)下載開發(fā)包添加到項目中,我對這個開發(fā)包做了一個精簡,刪去了那些php方面的文件:
項目基本結(jié)構(gòu):
二:添加對css和js文件的引用:
注意jquery.js文件和uploadify.js文件的調(diào)用順序。
三:Default.aspx頁面的代碼如下:
<head runat="server"> <title></title> <link href="js/uploadify/uploadify.css" rel="stylesheet" type="text/css" /> <script src="js/jquery-1.4.1-vsdoc.js" type="text/javascript"></script> <script src="js/uploadify/jquery.uploadify-3.1.js" type="text/javascript"></script> <script type="text/javascript"> $(function () { $("#uploadify").uploadify({ //指定swf文件 'swf': 'js/uploadify/uploadify.swf', //后臺處理的頁面 'uploader': 'UploadHandler.ashx', //按鈕顯示的文字 'buttonText': '上傳圖片', //顯示的高度和寬度,默認(rèn) height 30;width 120 //'height': 15, //'width': 80, //上傳文件的類型 默認(rèn)為所有文件 'All Files' ; '*.*' //在瀏覽窗口底部的文件類型下拉菜單中顯示的文本 'fileTypeDesc': 'Image Files', //允許上傳的文件后綴 'fileTypeExts': '*.gif; *.jpg; *.png', //發(fā)送給后臺的其他參數(shù)通過formData指定 //'formData': { 'someKey': 'someValue', 'someOtherKey': 1 }, //上傳文件頁面中,你想要用來作為文件隊列的元素的id, 默認(rèn)為false 自動生成, 不帶# //'queueID': 'fileQueue', //選擇文件后自動上傳 'auto': true, //設(shè)置為true將允許多文件上傳 'multi': true }); }); </script> </head> <body> <div> <%--用來作為文件隊列區(qū)域--%> <div id="fileQueue"> </div> <input type="file" name="uploadify" id="uploadify" /> <p> <a href="javascript:$('#uploadify').uploadify('upload')">上傳</a>| <a href="javascript:$('#uploadify').uploadify('cancel')">取消上傳</a> </p> </div> </body> </html>
四:一般處理程序UploadHandler.ashx簡單代碼如下:
public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/plain"; //http://www.cnblogs.com/babycool/ //接收上傳后的文件 HttpPostedFile file = context.Request.Files["Filedata"]; //其他參數(shù) //string somekey = context.Request["someKey"]; //string other = context.Request["someOtherKey"]; //獲取文件的保存路徑 string uploadPath = HttpContext.Current.Server.MapPath("UploadImages" + "\\"); //判斷上傳的文件是否為空 if (file != null) { if (!Directory.Exists(uploadPath)) { Directory.CreateDirectory(uploadPath); } //保存文件 file.SaveAs(uploadPath + file.FileName); context.Response.Write("1"); } else { context.Response.Write("0"); } } public bool IsReusable { get { return false; } }
五:用到的參數(shù)介紹:
通過查看jquery.uploadify-3.1.js中的默認(rèn)設(shè)置并參考官方文檔可得知:
參數(shù)不重新指定則保持默認(rèn):
swf:uploadify.swf 文件的相對路徑
uploader:后臺處理程序的相對路徑
buttonText:按鈕顯示的文字
上傳文件的類型默認(rèn)為所有文件 'All Files' '*.*'
可以通過以下兩參數(shù)指定,指定方法見步驟三中的代碼:
fileTypeDesc;fileTypeExts;
auto:為true表示選擇文件后自動上傳;如果不想自動上傳,需設(shè)定為false,并通過
<a href="javascript:$('#uploadify').uploadify('upload')">上傳</a>| <a href="javascript:$('#uploadify').uploadify('cancel')">取消上傳</a>
來指定是上傳還是取消上傳;
multi:設(shè)置為true將允許多文件上傳;
method: 提交方式Post 或Get 默認(rèn)為Post;
queueSizeLimit:當(dāng)允許多文件上傳時,設(shè)置選擇文件的個數(shù),默認(rèn)值為999 ;
另外,取消上傳圖片的路徑是設(shè)置在css文件中的;
其他更多設(shè)置可以參考官網(wǎng)的幫助文檔。
六:將上傳完成后顯示的Complete顯示為中文
英文的Complete不能改成中文”,這可能是之前的版本不能進(jìn)行修改。我通過查看源代碼 jquery.uploadify-3.1.js找到了上傳完成時顯示的內(nèi)容:
再參考官方的幫助文檔,可以得知,在“
onUploadSuccess” 事件中可以設(shè)置上傳完成后所執(zhí)行的代碼,則修改后的代碼為:
//選擇文件后自動上傳 'auto': true, //設(shè)置為true將允許多文件上傳 'multi': true, //上傳成功后執(zhí)行 'onUploadSuccess': function (file, data, response) { $('#' + file.id).find('.data').html(' 上傳完畢'); }
還有一個需要注意的一點是:一般在設(shè)定了選擇上傳文件路徑時比如只允許上傳*.jpg;*.png;*.gif格式的圖片文件,則除了指定fileTypeDesc;fileTypeExts;兩個參數(shù)外,還要在服務(wù)器端即一般處理程序中再次對上傳文件的文件擴(kuò)展名進(jìn)行判斷,以防一些用戶跳過客戶端驗證上傳惡意文件。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
jQuery 獲取對象 根據(jù)屬性、內(nèi)容匹配, 還有表單元素匹配
jQuery 練習(xí) 獲取對象(3) - 根據(jù)屬性、內(nèi)容匹配, 還有表單元素匹配2010-05-05jQuery實現(xiàn)的鼠標(biāo)拖動浮層功能示例【拖動div等任何標(biāo)簽】
這篇文章主要介紹了jQuery實現(xiàn)的鼠標(biāo)拖動浮層功能,可實現(xiàn)拖動div等任何標(biāo)簽的效果,涉及jQuery事件響應(yīng)及頁面元素屬性動態(tài)操作相關(guān)實現(xiàn)技巧,需要的朋友可以參考下2018-12-12EasyUI的treegrid組件動態(tài)加載數(shù)據(jù)問題的解決辦法
最近涉及到treegrid組件的查詢,需要根據(jù)查詢條件動態(tài)更新EasyUI的treegrid組件的動態(tài)加載查詢結(jié)果2011-12-12用簡潔的jQuery方法toggleClass實現(xiàn)隔行換色
這篇文章主要介紹了用簡潔的jQuery方法toggleClass實現(xiàn)隔行換色,很簡單,但很實用,需要的朋友可以看看2014-10-10jQuery 回調(diào)函數(shù)(callback)的使用和基礎(chǔ)
這篇文章主要介紹了jQuery 回調(diào)函數(shù)(callback)的使用和基礎(chǔ),需要的朋友可以參考下2015-02-02jquery 刪除節(jié)點 添加節(jié)點 找兄弟節(jié)點的簡單實現(xiàn)
下面小編就為大家?guī)硪黄猨query 刪除節(jié)點 添加節(jié)點 找兄弟節(jié)點的簡單實現(xiàn)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-12-12jQuery中delegate和on的用法與區(qū)別詳細(xì)解析
本篇文章主要是對jQuery中delegate和on的用法與區(qū)別進(jìn)行了詳細(xì)的介紹,需要的朋友可以過來參考下,希望對大家有所幫助2014-01-01