jQuery無(wú)刷新上傳之uploadify簡(jiǎn)單代碼
先簡(jiǎn)單的侃兩句:貌似已經(jīng)有兩個(gè)月的時(shí)間沒有寫過文章了,不過仍會(huì)像以前那樣每天至少有一至兩個(gè)小時(shí)是泡在園子里看各位大神的文章。前些天在研究“ajax無(wú)刷新上傳”方面的一些插件,用SWFUpload實(shí)現(xiàn)了無(wú)刷新上傳的功能,不過個(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版本,但至少原理都是一樣的,簡(jiǎn)單的修改一下就可以了。還是那句話“不僅要知其然,還要知其所以然”,知其所以然了,一切都是浮云?。?/p>
好了,廢話不多說。先上個(gè)效果圖,有圖有真相:

一:從官網(wǎng)下載開發(fā)包添加到項(xiàng)目中,我對(duì)這個(gè)開發(fā)包做了一個(gè)精簡(jiǎn),刪去了那些php方面的文件:

項(xiàng)目基本結(jié)構(gòu):

二:添加對(duì)css和js文件的引用:

注意jquery.js文件和uploadify.js文件的調(diào)用順序。
三:Default.aspx頁(yè)面的代碼如下:
<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)處理的頁(yè)面
'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 },
//上傳文件頁(yè)面中,你想要用來(lái)作為文件隊(duì)列的元素的id, 默認(rèn)為false 自動(dòng)生成, 不帶#
//'queueID': 'fileQueue',
//選擇文件后自動(dòng)上傳
'auto': true,
//設(shè)置為true將允許多文件上傳
'multi': true
});
});
</script>
</head>
<body>
<div>
<%--用來(lái)作為文件隊(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簡(jiǎn)單代碼如下:
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>
來(lái)指定是上傳還是取消上傳;
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)證上傳惡意文件。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
jQuery事件綁定on()、bind()與delegate() 方法詳解
這篇文章主要詳細(xì)介紹了jQuery事件綁定的三種方法,分別是on()、bind()與delegate(),十分的淺顯易懂,有需要的小伙伴可以參考下。2015-06-06
基于jQuery Easyui實(shí)現(xiàn)登陸框界面
本文通過實(shí)例代碼給大家分享了基于jQuery Easyui實(shí)現(xiàn)登陸框界面,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有參考借鑒價(jià)值,需要的的朋友參考下吧2017-07-07
基于jquery實(shí)現(xiàn)智能提示控件intellSeach.js
這篇文章主要為大家詳細(xì)介紹了基于jquery實(shí)現(xiàn)智能提示控件intellSeach.js的相關(guān)資料,感興趣的小伙伴們可以參考一下2016-03-03

