JQuery上传插件Uploadify使用详解
Uploadify是JQuery的一个上传插件,实现的效果非常不错,带进度显示。不过官方提供的实例时php版本的,本文将详细介绍Uploadify在Aspnet中的使用,您也可以点击下面的链接进行演示或下载。
- 官方下载
- 官方文档
- 官方演示
首先按下面的步骤来实现一个简单的上传功能。
1 创建Web项目,命名为JQueryUploadDemo,从官网上下载最新的版本解压后添加到项目中。
2 在项目中添加UploadHandler.ashx文件用来处理文件的上传。
3 在项目中添加UploadFile文件夹,用来存放上传的文件。
进行完上面三步后项目的基本结构如下图:
4 Default.aspx的html页的代码修改如下:
<span style="color: blue;"><span style="color: #a31515;">html </span><span style="color: red;">xmlns</span><span style="color: blue;">="http://www.w3.org/1999/xhtml"> <span style="color: #a31515;">head </span><span style="color: red;">runat</span><span style="color: blue;">="server"> <span style="color: #a31515;">title</span><span style="color: blue;">></span><span>Uploadify</span><span style="color: blue;"></span><span style="color: #a31515;">title</span><span style="color: blue;">> <span style="color: #a31515;">link </span><span style="color: red;">href</span><span style="color: blue;">="JS/jquery.uploadify-v2.1.0/example/css/default.css" </span><span style="color: red;">rel</span><span style="color: blue;">="stylesheet" </span><span style="color: red;">type</span><span style="color: blue;">="text/css" /> <span style="color: #a31515;">link </span><span style="color: red;">href</span><span style="color: blue;">="JS/jquery.uploadify-v2.1.0/uploadify.css" </span><span style="color: red;">rel</span><span style="color: blue;">="stylesheet" </span><span style="color: red;">type</span><span style="color: blue;">="text/css" /> <span style="color: #a31515;">script </span><span style="color: red;">type</span><span style="color: blue;">="text/javascript" </span><span style="color: red;">src</span><span style="color: blue;">="JS/jquery.uploadify-v2.1.0/jquery-1.3.2.min.js"></span><span style="color: #a31515;">script</span><span style="color: blue;">> <span style="color: #a31515;">script </span><span style="color: red;">type</span><span style="color: blue;">="text/javascript" </span><span style="color: red;">src</span><span style="color: blue;">="JS/jquery.uploadify-v2.1.0/swfobject.js"></span><span style="color: #a31515;">script</span><span style="color: blue;">> <span style="color: #a31515;">script </span><span style="color: red;">type</span><span style="color: blue;">="text/javascript" </span><span style="color: red;">src</span><span style="color: blue;">="JS/jquery.uploadify-v2.1.0/jquery.uploadify.v2.1.0.min.js"></span><span style="color: #a31515;">script</span><span style="color: blue;">> <span style="color: #a31515;">script </span><span style="color: red;">type</span><span style="color: blue;">="text/javascript"> </span><span>$(document).ready(</span><span style="color: blue;">function</span><span>() { $(</span><span style="color: #a31515;">"#uploadify"</span><span>).uploadify({ </span><span style="color: #a31515;">'uploader'</span><span>: </span><span style="color: #a31515;">'JS/jquery.uploadify-v2.1.0/uploadify.swf'</span><span>, </span><span style="color: #a31515;">'script'</span><span>: </span><span style="color: #a31515;">'UploadHandler.ashx'</span><span>, </span><span style="color: #a31515;">'cancelImg'</span><span>: </span><span style="color: #a31515;">'JS/jquery.uploadify-v2.1.0/cancel.png'</span><span>, </span><span style="color: #a31515;">'folder'</span><span>: </span><span style="color: #a31515;">'UploadFile'</span><span>, </span><span style="color: #a31515;">'queueID'</span><span>: </span><span style="color: #a31515;">'fileQueue'</span><span>, </span><span style="color: #a31515;">'auto'</span><span>: </span><span style="color: blue;">false</span><span>, </span><span style="color: #a31515;">'multi'</span><span>: </span><span style="color: blue;">true </span><span>}); }); </span><span style="color: blue;"></span><span style="color: #a31515;">script</span><span style="color: blue;">> </span><span style="color: #a31515;">head</span><span style="color: blue;">> <span style="color: #a31515;">body</span><span style="color: blue;">> <span style="color: #a31515;">div </span><span style="color: red;">id</span><span style="color: blue;">="fileQueue"></span><span style="color: #a31515;">div</span><span style="color: blue;">> <span style="color: #a31515;">input </span><span style="color: red;">type</span><span style="color: blue;">="file" </span><span style="color: red;">name</span><span style="color: blue;">="uploadify" </span><span style="color: red;">id</span><span style="color: blue;">="uploadify" /> <span style="color: #a31515;">p</span><span style="color: blue;">> <span style="color: #a31515;">a </span><span style="color: red;">href</span><span style="color: blue;">="javascript:$('#uploadify').uploadifyUpload()"></span><span>上传</span><span style="color: blue;"></span><span style="color: #a31515;">a</span><span style="color: blue;">></span><span>| </span><span style="color: blue;"><span style="color: #a31515;">a </span><span style="color: red;">href</span><span style="color: blue;">="javascript:$('#uploadify').uploadifyClearQueue()"></span><span>取消上传</span><span style="color: blue;"></span><span style="color: #a31515;">a</span><span style="color: blue;">> </span><span style="color: #a31515;">p</span><span style="color: blue;">> </span><span style="color: #a31515;">body</span><span style="color: blue;">> </span><span style="color: #a31515;">html</span><span style="color: blue;">></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
5 UploadHandler类的ProcessRequest方法代码如下:
<span style="color: blue;">public void </span><span>ProcessRequest(</span><span style="color: #2b91af;">HttpContext </span><span>context) { context.Response.ContentType = </span><span style="color: #a31515;">"text/plain"</span><span>; context.Response.Charset = </span><span style="color: #a31515;">"utf-8"</span><span>; </span><span style="color: #2b91af;">HttpPostedFile </span><span>file = context.Request.Files[</span><span style="color: #a31515;">"Filedata"</span><span>]; </span><span style="color: blue;">string </span><span>uploadPath = </span><span style="color: #2b91af;">HttpContext</span><span>.Current.Server.MapPath(@context.Request[</span><span style="color: #a31515;">"folder"</span><span>])+</span><span style="color: #a31515;">"\\"</span><span>; </span><span style="color: blue;">if </span><span>(file != </span><span style="color: blue;">null</span><span>) { </span><span style="color: blue;">if </span><span>(!</span><span style="color: #2b91af;">Directory</span><span>.Exists(uploadPath)) { </span><span style="color: #2b91af;">Directory</span><span>.CreateDirectory(uploadPath); } file.SaveAs(uploadPath + file.FileName); </span><span style="color: green;">//下面这句代码缺少的话,上传成功后上传队列的显示不会自动消失 </span><span>context.Response.Write(</span><span style="color: #a31515;">"1"</span><span>); } </span><span style="color: blue;">else </span><span>{ context.Response.Write(</span><span style="color: #a31515;">"0"</span><span>); } }</span>
6 运行后效果如下图:
7 选择了两个文件后,点击上传,就可以看到UploadFile文件夹中会增加这两个文件。
上面简单地实现了一个上传的功能,依靠函数uploadify实现,uploadify函数的参数为json格式,可以对json对象的key值的修改来进行自定义的设置,如multi设置为true或false来控制是否可以进行多文件上传,下面就来介绍下这些key值的意思:
uploader : uploadify.swf 文件的相对路径,该swf文件是一个带有文字BROWSE的按钮,点击后淡出打开文件对话框,默认值:uploadify.swf。
script : 后台处理程序的相对路径 。默认值:uploadify.php
checkScript :用来判断上传选择的文件在服务器是否存在的后台处理程序的相对路径
fileDataName :设置一个名字,在服务器处理程序中根据该名字来取上传文件的数据。默认为Filedata
method : 提交方式Post 或Get 默认为Post
scriptAccess :flash脚本文件的访问模式,如果在本地测试设置为always,默认值:sameDomain
folder : 上传文件存放的目录 。
queueID : 文件队列的ID,该ID与存放文件队列的div的ID一致。
queueSizeLimit : 当允许多文件生成时,设置选择文件的个数,默认值:999 。
multi : 设置为true时可以上传多个文件。
auto : 设置为true当选择文件后就直接上传了,为false需要点击上传按钮才上传 。
fileDesc : 这个属性值必须设置fileExt属性后才有效,用来设置选择文件对话框中的提示文本,如设置fileDesc为“请选择rar doc pdf文件”,打开文件选择框效果如下图:
fileExt : 设置可以选择的文件的类型,格式如:'*.doc;*.pdf;*.rar' 。
sizeLimit : 上传文件的大小限制 。
simUploadLimit : 允许同时上传的个数 默认值:1 。
buttonText : 浏览按钮的文本,默认值:BROWSE 。
buttonImg : 浏览按钮的图片的路径 。
hideButton : 设置为true则隐藏浏览按钮的图片 。
rollover : 值为true和false,设置为true时当鼠标移到浏览按钮上时有反转效果。
width : 设置浏览按钮的宽度 ,默认值:110。
height : 设置浏览按钮的高度 ,默认值:30。
wmode : 设置该项为transparent 可以使浏览按钮的flash背景文件透明,并且flash文件会被置为页面的最高层。 默认值:opaque 。
cancelImg :选择文件到文件队列中后的每一个文件上的关闭按钮图标,如下图:
上面介绍的key值的value都为字符串或是布尔类型,比较简单,接下来要介绍的key值的value为一个函数,可以在选择文件、出错或其他一些操作的时候返回一些信息给用户。
onInit : 做一些初始化的工作。
onSelect :选择文件时触发,该函数有三个参数
- event:事件对象。
- queueID:文件的唯一标识,由6为随机字符组成。
- fileObj:选择的文件对象,有name、size、creationDate、modificationDate、type 5个属性。
代码如下:
<span>$(document).ready(</span><span style="color: blue;">function</span><span>() { $(</span><span style="color: #a31515;">"#uploadify"</span><span>).uploadify({ </span><span style="color: #a31515;">'uploader'</span><span>: </span><span style="color: #a31515;">'JS/jquery.uploadify-v2.1.0/uploadify.swf'</span><span>, </span><span style="color: #a31515;">'script'</span><span>: </span><span style="color: #a31515;">'UploadHandler.ashx'</span><span>, </span><span style="color: #a31515;">'cancelImg'</span><span>: </span><span style="color: #a31515;">'JS/jquery.uploadify-v2.1.0/cancel.png'</span><span>, </span><span style="color: #a31515;">'folder'</span><span>: </span><span style="color: #a31515;">'UploadFile'</span><span>, </span><span style="color: #a31515;">'queueID'</span><span>: </span><span style="color: #a31515;">'fileQueue'</span><span>, </span><span style="color: #a31515;">'auto'</span><span>: </span><span style="color: blue;">false</span><span>, </span><span style="color: #a31515;">'multi'</span><span>: </span><span style="color: blue;">true</span><span>, </span><span style="color: #a31515;">'onInit'</span><span>:</span><span style="color: blue;">function</span><span>(){alert(</span><span style="color: #a31515;">"1"</span><span>);}, </span><span style="color: #a31515;">'onSelect'</span><span>: </span><span style="color: blue;">function</span><span>(e, queueId, fileObj) { alert(</span><span style="color: #a31515;">"唯一标识:" </span><span>+ queueId + </span><span style="color: #a31515;">"\r\n" </span><span>+ </span><span style="color: #a31515;">"文件名:" </span><span>+ fileObj.name + </span><span style="color: #a31515;">"\r\n" </span><span>+ </span><span style="color: #a31515;">"文件大小:" </span><span>+ fileObj.size + </span><span style="color: #a31515;">"\r\n" </span><span>+ </span><span style="color: #a31515;">"创建时间:" </span><span>+ fileObj.creationDate + </span><span style="color: #a31515;">"\r\n" </span><span>+ </span><span style="color: #a31515;">"最后修改时间:" </span><span>+ fileObj.modificationDate + </span><span style="color: #a31515;">"\r\n" </span><span>+ </span><span style="color: #a31515;">"文件类型:" </span><span>+ fileObj.type ); } }); }); </span>
当选择一个文件后弹出的消息如下图:
onSelectOnce :在单文件或多文件上传时,选择文件时触发。该函数有两个参数event,data,data对象有以下几个属性:
- fileCount:选择文件的总数。
- filesSelected:同时选择文件的个数,如果一次选择了3个文件该属性值为3。
- filesReplaced:如果文件队列中已经存在A和B两个文件,再次选择文件时又选择了A和B,该属性值为2。
- allBytesTotal:所有选择的文件的总大小。
onCancel : 当点击文件队列中文件的关闭按钮或点击取消上传时触发。该函数有event、queueId、fileObj、data四个参数,前三个参数同onSelect 中的三个参数,data对象有两个属性fileCount和allBytesTotal。
- fileCount:取消一个文件后,文件队列中剩余文件的个数。
- allBytesTotal:取消一个文件后,文件队列中剩余文件的大小。
onClearQueue :当调用函数fileUploadClearQueue时触发。有event和data两个参数,同onCancel 中的两个对应参数。
onQueueFull :当设置了queueSizeLimit并且选择的文件个数超出了queueSizeLimit的值时触发。该函数有两个参数event和queueSizeLimit。
onError :当上传过程中发生错误时触发。该函数有event、queueId、fileObj、errorObj四个参数,其中前三个参数同上,errorObj对象有type和info两个属性。
- type:错误的类型,有三种‘HTTP’, ‘IO’, or ‘Security’
- info:错误的描述
onOpen :点击上传时触发,如果auto设置为true则是选择文件时触发,如果有多个文件上传则遍历整个文件队列。该函数有event、queueId、fileObj三个参数,参数的解释同上。
onProgress :点击上传时触发,如果auto设置为true则是选择文件时触发,如果有多个文件上传则遍历整个文件队列,在onOpen之后触发。该函数有event、queueId、fileObj、data四个参数,前三个参数的解释同上。data对象有四个属性percentage、bytesLoaded、allBytesLoaded、speed:
- percentage:当前完成的百分比
- bytesLoaded:当前上传的大小
- allBytesLoaded:文件队列中已经上传完的大小
- speed:上传速率 kb/s
onComplete:文件上传完成后触发。该函数有四个参数event、queueId、fileObj、response、data五个参数,前三个参数同上。response为后台处理程序返回的值,在上面的例子中为1或0,data有两个属性fileCount和speed
- fileCount:剩余没有上传完成的文件的个数。
- speed:文件上传的平均速率 kb/s
注:fileObj对象和上面讲到的有些不太一样,onComplete 的fileObj对象有个filePath属性可以取出上传文件的路径。
onAllComplete:文件队列中所有的文件上传完成后触发。该函数有event和data两个参数,data有四个属性,分别为:
- filesUploaded :上传的所有文件个数。
- errors :出现错误的个数。
- allBytesLoaded :所有上传文件的总大小。
- speed :平均上传速率 kb/s
相关函数介绍
在上面的例子中已经用了uploadifyUpload和uploadifyClearQueue两个函数,除此之外还有几个函数:
uploadifySettings:可以动态修改上面介绍的那些key值,如下面代码
<span>$(</span><span style="color: #a31515;">'#uploadify'</span><span>).uploadifySettings(</span><span style="color: #a31515;">'folder'</span><span>,</span><span style="color: #a31515;">'JS'</span><span>);</span>
如果上传按钮的事件写成下面这样,文件将会上传到uploadifySettings定义的目录中
<span style="color: blue;"><span style="color: #a31515;">a </span><span style="color: red;">href</span><span style="color: blue;">="javascript:$('#uploadify').uploadifySettings('folder','JS');</span></span>
<span style="color: blue;">$('#uploadify').uploadifyUpload()"></span><span>上传</span><span style="color: blue;"></span><span style="color: #a31515;">a</span><span style="color: blue;">></span>
uploadifyCancel:该函数接受一个queueID作为参数,可以取消文件队列中指定queueID的文件。
<span>$(</span><span style="color: #a31515;">'#uploadify'</span><span>).uploadifyCancel(id);</span>
花了一个晚上,终于写完了,对JQuery这个上传插件也基本了解了,希望对大家有所帮助,不对之处还望大家指正。
源码下载

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

本站6月24日消息,在6月21日HDC2024華為開發者大會主題演講上,華為終端BG軟體部總裁龔體正式官宣了華為自研倉頡程式語言。語言歷經5年研發沉澱,現已開啟開發者預覽。華為開發者官網現已推出倉頡編程語言官方入門教程視頻,方便開發者初步上手理解。教程將帶使用者體驗倉頡、學習倉頡、應用倉頡,包括用倉頡語言估算圓周率、計算2024年各月的干支紀法、看到二叉樹在倉頡語言中的N種表達方式,以及用枚舉類型實現代數計算、用介面和擴充實現訊號系統模擬,還有用倉頡宏擴展出新語法等等。本站附教學存取位址:ht

本站6月21日消息,在今日下午的HDC2024華為開發者大會上,華為終端BG軟體部總裁龔體正式官宣了華為自研倉頡編程語言,並發布了HarmonyOSNEXT倉頡語言開發者預覽版。這是華為首次公開發布倉頡程式語言。龔體表示:「2019年,倉頡程式語言計畫在華為誕生,歷經5年研發沉澱,大量研發投入,今日終於和全球開發者見面。倉頡程式語言透過現代語言特性的整合、全方位的編譯優化和運行時實現、以及開箱即用的IDE工具鏈支持,為開發者打造友好開發體驗和卓越程序性能。

本站6月21日消息,華為自研倉頡程式語言今日正式亮相,官方宣布開啟HarmonyOSNEXT倉頡語言開發者預覽版Beta招募。本次升級為開發者預覽版嚐鮮升級,提供倉頡語言SDK、開發者指南以及相關的DevEcoStudio插件,供開發者使用倉頡語言開發、調試及運行HarmonyOSNext應用。報名週期:2024年6月21日-2024年10月21日申請要求:本次HarmonyOSNEXT倉頡語言開發者預覽版Beta招募活動,僅開放給以下開發者報名:1)已在華為開發者聯盟完成實名認證;2)完成H

本站6月22日消息,華為昨日向全球開發者介紹華為自研程式語言-倉頡(Cangjie)。這是倉頡程式語言的首次公開亮相。本站查詢獲悉,天津大學、北京航空航天大學深度參與了華為「倉頡」的研發。天津大學:倉頡程式語言編譯器天津大學智能與計算學部軟體工程團隊攜手華為倉頡團隊,深度參與倉頡程式語言編譯器的品質保障研究。據介紹,倉頡編譯器是與倉頡程式語言共生的基礎軟體。在倉頡程式語言的籌備階段,與之相匹配的高品質編譯器成為核心目標之一。隨著倉頡程式語言的演化,倉頡編譯器也不斷升級、改進。五年來,天津大

本站6月21日消息,在HDC2024華為開發者大會前,華為自研倉頡程式語言正式亮相,倉頡官網現已上線。官網介紹顯示,倉頡程式語言是一款面向全場景智慧的新一代程式語言,主打「原生智慧化、天生全場景、高效能,強大安全」。融入鴻蒙生態,為開發者提供良好的程式設計體驗。本站附官網介紹如下:原生智慧化內嵌AgentDSL的程式框架,自然語言&程式語言有機融合;多Agent協同,簡化符號表達,模式自由組合,支援各類智慧應用開發。天生全場景輕量化可縮放運行時,模組化分層設計,記憶體再小也能裝得下;全場景領域擴

6月21日消息,今天下午,華為開發者大會2024將正式揭幕。 「純血鴻蒙」HarmonyOSNEXT自然是重中之重,按照餘承東之前透露的規劃,今天下午就可能正式宣佈公測,普通消費者也能嚐鮮「純血鴻蒙」了。據爆料,首批支援的手機為Mate60系列和Pura70系列。值得注意的是,作為“純血鴻蒙”,HarmonyOSNEXT去掉了傳統的Linux核心和AOSP安卓開源程式碼,全端自研。據新浪科技最新報道稱,華為還將補齊鴻蒙生態的最後一環,在大

本站6月21日消息,華為自研倉頡程式語言今日正式亮相,並開啟HarmonyOSNEXT倉頡語言開發者預覽版Beta招募。華為官網倉頡程式語言問答頁面顯示,倉頡程式語言是一款面向全場景智慧的下一代應用程式語言,主打原生智能化,天生全場景,高性能以及強安全,與鴻蒙系統結合,提供良好的編程體驗。面向不同業務場景,鴻蒙生態提供應用開發者倉頡和ArkTS等多語言混合開發能力。倉頡和ArkTS共同發展,在鴻蒙生態中形成優勢互補。倉頡更適合有高效能高並發需求的業務場景,倉頡程式語言目標是打造鴻蒙應用在任務並

PHP在電子商務、內容管理系統和API開發中廣泛應用。 1)電子商務:用於購物車功能和支付處理。 2)內容管理系統:用於動態內容生成和用戶管理。 3)API開發:用於RESTfulAPI開發和API安全性。通過性能優化和最佳實踐,PHP應用的效率和可維護性得以提升。
