jQuery無刷新上傳之uploadify簡單代碼
先簡單的侃兩句:貌似已經(jīng)有兩個(gè)月的時(shí)間沒有寫過文章了,不過仍會(huì)像以前那樣每天至少有一至兩個(gè)小時(shí)是泡在園子里看各位大神的文章。前些天在研究“ajax無刷新上傳”方面的一些插件,用SWFUpload實(shí)現(xiàn)了無刷新上傳的功能,不過個(gè)人覺得不是很完美。
昨天在網(wǎng)上找到了一個(gè)叫做uploadify的jquery上傳插件,看到園子里有幾篇文章也是介紹這個(gè)插件的,心想何不用這個(gè)試試。
不過園子里的這幾篇文章用到的uploadify還是以前的舊版本uploadify-v2.1.0,我在官網(wǎng)上下載的是uploadify-v3.1版,其中的一些參數(shù)以及調(diào)用方法也不同了,還好官網(wǎng)有幫助文檔。
(唯一感覺不爽的一點(diǎn)就是這個(gè)開發(fā)包是針對(duì)php的,官網(wǎng)并沒有.NET版本,但至少原理都是一樣的,簡單的修改一下就可以了。還是那句話“不僅要知其然,還要知其所以然”,知其所以然了,一切都是浮云啊)
好了,廢話不多說。先上個(gè)效果圖,有圖有真相:
一:從官網(wǎng)下載開發(fā)包添加到項(xiàng)目中,我對(duì)這個(gè)開發(fā)包做了一個(gè)精簡,刪去了那些php方面的文件:
項(xiàng)目基本結(jié)構(gòu):
二:添加對(duì)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', //后臺(tái)處理的頁面 '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ā)送給后臺(tái)的其他參數(shù)通過formData指定 //'formData': { 'someKey': 'someValue', 'someOtherKey': 1 }, //上傳文件頁面中,你想要用來作為文件隊(duì)列的元素的id, 默認(rèn)為false 自動(dòng)生成, 不帶# //'queueID': 'fileQueue', //選擇文件后自動(dòng)上傳 'auto': true, //設(shè)置為true將允許多文件上傳 'multi': true }); }); </script> </head> <body> <div> <%--用來作為文件隊(duì)列區(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 文件的相對(duì)路徑
uploader:后臺(tái)處理程序的相對(duì)路徑
buttonText:按鈕顯示的文字
上傳文件的類型默認(rèn)為所有文件 'All Files' '*.*'
可以通過以下兩參數(shù)指定,指定方法見步驟三中的代碼:
fileTypeDesc;fileTypeExts;
auto:為true表示選擇文件后自動(dòng)上傳;如果不想自動(dòng)上傳,需設(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è)置選擇文件的個(gè)數(shù),默認(rèn)值為999 ;
另外,取消上傳圖片的路徑是設(shè)置在css文件中的;
其他更多設(shè)置可以參考官網(wǎng)的幫助文檔。
六:將上傳完成后顯示的Complete顯示為中文
英文的Complete不能改成中文”,這可能是之前的版本不能進(jìn)行修改。我通過查看源代碼 jquery.uploadify-3.1.js找到了上傳完成時(shí)顯示的內(nèi)容:
再參考官方的幫助文檔,可以得知,在“
onUploadSuccess” 事件中可以設(shè)置上傳完成后所執(zhí)行的代碼,則修改后的代碼為:
//選擇文件后自動(dòng)上傳 'auto': true, //設(shè)置為true將允許多文件上傳 'multi': true, //上傳成功后執(zhí)行 'onUploadSuccess': function (file, data, response) { $('#' + file.id).find('.data').html(' 上傳完畢'); }
還有一個(gè)需要注意的一點(diǎn)是:一般在設(shè)定了選擇上傳文件路徑時(shí)比如只允許上傳*.jpg;*.png;*.gif格式的圖片文件,則除了指定fileTypeDesc;fileTypeExts;兩個(gè)參數(shù)外,還要在服務(wù)器端即一般處理程序中再次對(duì)上傳文件的文件擴(kuò)展名進(jìn)行判斷,以防一些用戶跳過客戶端驗(yàn)證上傳惡意文件。
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
jQuery Raty 一款不錯(cuò)的星級(jí)評(píng)分插件
一款不錯(cuò)的星級(jí)評(píng)分插件,這篇文章主要介紹了jQuery Raty星級(jí)評(píng)分插件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-08-08jQuery 獲取對(duì)象 根據(jù)屬性、內(nèi)容匹配, 還有表單元素匹配
jQuery 練習(xí) 獲取對(duì)象(3) - 根據(jù)屬性、內(nèi)容匹配, 還有表單元素匹配2010-05-05jQuery實(shí)現(xiàn)的鼠標(biāo)拖動(dòng)浮層功能示例【拖動(dòng)div等任何標(biāo)簽】
這篇文章主要介紹了jQuery實(shí)現(xiàn)的鼠標(biāo)拖動(dòng)浮層功能,可實(shí)現(xiàn)拖動(dòng)div等任何標(biāo)簽的效果,涉及jQuery事件響應(yīng)及頁面元素屬性動(dòng)態(tài)操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-12-12EasyUI的treegrid組件動(dòng)態(tài)加載數(shù)據(jù)問題的解決辦法
最近涉及到treegrid組件的查詢,需要根據(jù)查詢條件動(dòng)態(tài)更新EasyUI的treegrid組件的動(dòng)態(tài)加載查詢結(jié)果2011-12-12用簡潔的jQuery方法toggleClass實(shí)現(xiàn)隔行換色
這篇文章主要介紹了用簡潔的jQuery方法toggleClass實(shí)現(xiàn)隔行換色,很簡單,但很實(shí)用,需要的朋友可以看看2014-10-10jQuery 回調(diào)函數(shù)(callback)的使用和基礎(chǔ)
這篇文章主要介紹了jQuery 回調(diào)函數(shù)(callback)的使用和基礎(chǔ),需要的朋友可以參考下2015-02-02jquery 刪除節(jié)點(diǎn) 添加節(jié)點(diǎn) 找兄弟節(jié)點(diǎn)的簡單實(shí)現(xiàn)
下面小編就為大家?guī)硪黄猨query 刪除節(jié)點(diǎn) 添加節(jié)點(diǎn) 找兄弟節(jié)點(diǎn)的簡單實(shí)現(xiàn)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-12-12jQuery中delegate和on的用法與區(qū)別詳細(xì)解析
本篇文章主要是對(duì)jQuery中delegate和on的用法與區(qū)別進(jìn)行了詳細(xì)的介紹,需要的朋友可以過來參考下,希望對(duì)大家有所幫助2014-01-01