jquery文件上傳控件 Uploadify

基于jquery的文件上傳控件,支持ajax無刷新上傳,多個文件同時上傳,上傳進行進度顯示,刪除已上傳文件。

要求使用jquery1.4或以上版本,flash player 9.0.24以上。

有兩個版本,一個用flash,一個是html5。html5的需要付費~所以這里只說flash版本的用法。

?

官網:http://www.uploadify.com/

控件截圖:

用法:

首先引用下面的文件

<link rel="stylesheet" type="text/css" href="uploadify.css">
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="jquery.uploadify-3.1.min.js"></script>

創建一個file input,或者其它任何帶ID的元素,并對其初始化Uploadify(注意目錄下要有uploadify.swf這個文件,和uploadify.php后臺文件,路徑按項目中的目錄結構)

<input type="file" name="file_upload" id="file_upload" />
<script>$(function(){$('#file_upload').uploadify({'swf'      :'uploadify.swf','uploader':'uploadify.php'// Put your options here
       });});
</script>

這樣子就完成了一個最基礎的上傳組建。基本原理是改變你創建的file input生成一個DOM結構,創建一個DIV按鈕,按鈕樣式修改在uploadify.css文件中的.uploadify-button,將swf文件定位在按鈕上面,這樣當你點擊按鈕時實際上點擊的是swf

Options:

$('#file_upload').uploadify({auto:false, //接受true or false兩個值,當為true時選擇文件后會自動上傳;為false時只會把選擇的文件增加進隊列但不會上傳,這時只能使用upload的方法觸發上傳。不設置auto時默認為truebuttonClass: "some-class", //設置上傳按鈕的classbuttonCursor: 'hand',//設置鼠標移到按鈕上的開狀,接受兩個值'hand'和'arrow'(手形和箭頭)buttonImage: 'img/browse-btn.png', //設置圖片按鈕的路徑(當你的按鈕是一張圖片時)。如果使用默認的樣式,你還可以創建一個鼠標懸停狀態,但要把兩種狀態的圖片放在一起,并且默認的放上面,懸停狀態的放在下面(原文好難表達啊:you can create a hover state for the button by stacking the off state above the hover state in the image)。這只是一個比較便利的選項,最好的方法還是把圖片寫在CSS里面。buttonText: '<div>選擇文件</div>',//設置按鈕文字。值會被當作html渲染,所以也可以包含html標簽checkExisting: '/uploadify/check-exists.php',//接受一個文件路徑。此文件檢查正要上傳的文件名是否已經存在目標目錄中。存在時返回1,不存在時返回0(應該主要是作為后臺的判斷吧),默認為falsedebug: false,//開啟或關閉debug模式fileObjName:'filedata',//設置在后臺腳本使用的文件名。舉個例子,在php中,如果這個選項設置為'the_files',你可以使用$_FILES['the_files']存取這個已經上傳的文件。fileSizeLimit:'100MB',//設置上傳文件的容量最大值。這個值可以是一個數字或者字符串。如果是字符串,接受一個單位(B,KB,MB,GB)。如果是數字則默認單位為KB。設置為0時表示不限制fileTypeExts: '*.*',//設置允許上傳的文件擴展名(也就是文件類型)。但手動鍵入文件名可以繞過這種級別的安全檢查,所以你應該始終在服務端中檢查文件類型。輸入多個擴展名時用分號隔開('*.jpg;*.png;*.gif')fileTypeDesc: 'All Files',//可選文件的描述。這個值出現在文件瀏覽窗口中的文件類型下拉選項中。(chrome下不支持,會顯示為'自定義文件',ie and firefox下可顯示描述)
                formData: {timestamp: '<?php echo $timestamp;?>',token: '<?php echo md5('unique_salt' . $timestamp);?>'},//通過get或post上傳文件時,此對象提供額外的數據。如果想動態設置這些值,必須在onUploadStartg事件中使用settings的方法設置。在后臺腳本中使用 $_GET or $_POST arrays (PHP)存取這些值。看官網參考寫法:http://www.uploadify.com/documentation/uploadify/formdata/height: 30,//設置按鈕的高度(單位px),默認為30.(不要在值里寫上單位,并且要求一個整數,width也一樣)width: 120,//設置按鈕寬度(單位px),默認120itemTemplate:false,//模板對象。給增加到上傳隊列中的每一項指定特殊的html模板。模板格式請看官網http://www.uploadify.com/documentation/uploadify/itemtemplate/method:'post',//提交上傳文件的方法,接受post或get兩個值,默認為postmulti: false,//設置是否允許一次選擇多個文件,true為允許,false不允許
                overrideEvents: [],//重寫事件,接受事件名稱的數組作為參數。所設置的事件將可以被用戶重寫覆蓋preventCaching:true,//是否緩存swf文件。默認為true,會給swf的url地址設置一個隨機數,這樣它就不會被緩存。(有些瀏覽器緩存了swf文件就會觸發不了里面的事件--by rainweb)progressData: 'percentage',//設置文件上傳時顯示數據,有‘percentage’ or ‘speed’兩個參數(百分比和速度)queueID: false,//設置上傳隊列DOM元素的ID,上傳的項目會增加進這個ID的DOM中。設置為false時則會自動生成隊列DOM和ID。默認為falsequeueSizeLimit: 999,//設置每一次上傳隊列中的文件數量。注意并不是限制總的上傳文件數量(那是uploadLimit).如果增加進隊列中的文件數量超出這個值,將會觸發onSelectError事件。默認值為999removeCompleted: true,//是否移除掉隊列中已經完成上傳的文件。false為不移除removeTimeout: 3,//設置上傳完成后刪除掉文件的延遲時間,默認為3秒。如果removeCompleted為false的話,就沒意義了requeueErrors: false,//設置上傳過程中因為出錯導致上傳失敗的文件是否重新加入隊列中上傳successTimeout: 30,//設置文件上傳后等待服務器響應的秒數,超出這個時間,將會被認為上傳成功,默認為30秒swf: 'uploadify.swf',//swf的相對路徑,必寫項uploader: 'uploadify.php'//服務器端腳本文件路徑,必寫項uploadLimit: 999//上傳文件的數量。達到或超出這數量會觸發onUploadError方法。默認999})

?Events:

$('#file_upload').uploadify({    onCancel: function(file){console.log('The file'+ file.name + 'was cancelled.')},//文件被移除出隊列時觸發,返回file參數onClearQueue: function(queueItemCount){console.log(queueItemCount+'file(s) were removed frome the queue')},//當調用cancel方法且傳入'*'這個參數的時候觸發,其實就是移除掉整個隊列里的文件時觸發,上面有說cancel方法帶*時取消整個上傳隊列onDestroy: function(){//調用destroy方法的時候觸發
                },onDialogClose: function(queueData){console.log(queueData.filesSelected+'\n'+queueData.filesQueued+'\r\n'+queueData.filesReplaced+'\r\n'+queueData.filesCancelled+'\r\n'+ queueData.filesErrored)},//關閉掉瀏覽文件對話框時觸發。返回queueDate參數,有以下屬性:/*filesSelected 瀏覽文件對話框中選取的文件數量filesQueued 加入上傳隊列的文件數filesReplaced 被替換的文件個數filesCancelled 取消掉即將加入隊列中的文件個數filesErrored 返回錯誤的文件個數*/onDialogOpen:function(){//打開選擇文件對話框時觸發
                },onDisable:function(){//禁用uploadify時觸發(通過disable方法)
                },onEnalbe: function(){//啟用uploadify時觸發(通過disable方法)
                },onFallback:function(){//在初始化時檢測不到瀏覽器有兼容性的flash版本時實觸發
                },onInit: function(instance){console.log('The queue ID is'+ instance.settings.queueID)},//每次初始化一個隊列時觸發,返回uploadify對象的實例onQueueComplete:function(queueData){console.log(queueData.uploadsSuccessful+'\n'+queueData.uploadsErrored)},//隊列中的文件都上傳完后觸發,返回queueDate參數,有以下屬性:/*uploadsSuccessful 成功上傳的文件數量uploadsErrored 出現錯誤的文件數量*/onSelect: function(file){console.log(file.name)},//選擇每個文件增加進隊列時觸發,返回file參數onSelectError: function(file,errorCode,errorMsg){console.log(errorCode)console.log(this.queueData.errorMsg)},//選擇文件出錯時觸發,返回file,erroCode,errorMsg三個參數/*errorCode是一個包含了錯誤碼的js對象,用來查看事件中發送的錯誤碼,以確定錯誤的具體類型,可能會有以下的常量:QUEUE_LIMIT_EXCEEDED:-100 選擇的文件數量超過設定的最大值;FILE_EXCEEDS_SIZE_LIMIT:-110 文件的大小超出設定INVALID_FILETYPE:-130 選擇的文件類型跟設置的不匹配errorMsg 完整的錯誤信息,如果你不重寫默認的事件處理器,可以使用‘this.queueData.errorMsg’ 存取完整的錯誤信息*/onSWFReady: function(){//swf動畫加載完后觸發,沒有參數
                },onUploadComplete: function(file){//在每一個文件上傳成功或失敗之后觸發,返回上傳的文件對象或返回一個錯誤,如果你想知道上傳是否成功,最后使用onUploadSuccess或onUploadError事件
                },onUploadError: function(file,errorCode,erorMsg,errorString){},//一個文件完成上傳但返回錯誤時觸發,有以下參數/*file 完成上傳的文件對象errorCode 返回的錯誤代碼erorMsg 返回的錯誤信息errorString 包含所有錯誤細節的可讀信息*/onUploadProgress: function(file,bytesUploaded,bytesTotal,totalBytesUploaded,totalBytesTotal){$('#pregress').html('總共需要上傳'+bytesTotal+'字節,'+'已上傳'+totalBytesTotal+'字節')},//每更新一個文件上傳進度的時候觸發,返回以下參數/*file 正上傳文件對象bytesUploaded 文件已經上傳的字節數bytesTotal 文件的總字節數totalBytesUploaded 在當前上傳的操作中(所有文件)已上傳的總字節數totalBytesTotal 所有文件的總上傳字節數*/onUploadStart: function(file){console.log('start update')},//每個文件即將上傳前觸發onUploadSuccess: function(file,data,respone){alert( 'id: ' + file.id+ ' - 索引: ' + file.index+ ' - 文件名: ' + file.name+ ' - 文件大小: ' + file.size+ ' - 類型: ' + file.type+ ' - 創建日期: ' + file.creationdate+ ' - 修改日期: ' + file.modificationdate+ ' - 文件狀態: ' + file.filestatus+ ' - 服務器端消息: ' + data+ ' - 是否上傳成功: ' + response);}//每個文件上傳成功后觸發              
})

Methods:
Uploadify使用jquery推薦的插件模式,這意味著所有方法的調用都保持在一個命名空間里。?調用這些不同的方法,只需要把方法當成第一個參數傳進uploadify里調用就行。在這些方法后面增加參數會被傳進這個方法里(這兩句翻譯得不是很順暢,附原文:?To use the different method calls, simply call Uploadify on the DOM element with the method call as the first argument.Any additional arguments added after the method name are passed to the method.)

cancel:取消第一個上傳的文件,如果后面帶參數"*"則是取消掉整個上傳隊列,如$(el).uploadify('cancel', '*')

upload:上傳第一個上傳的文件,如果后面帶參數"*"則上傳整個隊列,跟cancel一樣

destroy:移除掉上傳組建,按html默認的方法上傳

disable:有true or false 兩個參數,表示是否禁止上傳按鈕,true表示禁止,false表示允許上傳

settings:返回或者更新一個實例的方法值,接受一個方法名的參數時是返回那個方法的值,當后面再跟一個參數,則是更新那個方法的值。如

$(el).uploadify('settings','buttonText','BROWSE'); //設置buttonText的值為BROWSE
$(el).uploadify('settings','buttonText') //返回buttonText的值

stop:停止正在上傳中的文件或隊列

下載demo

翻譯到中間的時候才發原來網上早已有中文API跟其它的例子,這里附帶幾個,也是我參考著翻譯的資料

http://wenku.baidu.com/view/9df6ce0bde80d4d8d15a4faa.html

http://wenku.baidu.com/view/87df2673a417866fb84a8efd.html

http://www.cnblogs.com/oec2003/archive/2010/01/06/1640027.html

http://www.cnblogs.com/luohu/archive/2011/12/16/2290135.html

?

轉載于:https://www.cnblogs.com/jj-notes/p/7026471.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/370323.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/370323.shtml
英文地址,請注明出處:http://en.pswp.cn/news/370323.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

imagick php 縮放,php使用imagick模塊實現圖片縮放、裁剪、壓縮示例

PHP 使用Imagick模塊 縮放&#xff0c;裁剪&#xff0c;壓縮圖片 包括gif圖片縮放 裁剪代碼如下:/*** 圖片裁剪* 裁剪規則&#xff1a;* 1. 高度為空或為零 按寬度縮放 高度自適應* 2. 寬度為空或為零 按高度縮放 寬度自適應* 3. 寬度&#xff0c;高度到不為空或為…

php實現第三方郵箱登錄_PHP實現用戶異地登錄提醒功能的方法

有時候你的網站賬號被盜或你在別處登錄操作后臺時&#xff0c;右下角會彈出提示信息&#xff0c;提醒你的賬號異地登錄&#xff0c;或者會被強制下線。對于這種安全性要求比較高的web網站&#xff0c;很多后臺管理都會做這種功能提醒。甄別自己的賬號是否被盜或者是否有另一個人…

課時47.datalist標簽(了解)

1.datalist標簽 作用&#xff1a;給輸入框綁定待選項 2.datalist格式&#xff1a; <datalist> <option>待選項內容</option> </datalist> 3.如何給輸入框綁定待選列表&#xff1f; 搞一個輸入框搞一個datalist列表給datalist列表標簽添加一個id給…

pandas.read_csv參數詳解

讀取CSV&#xff08;逗號分割&#xff09;文件到DataFrame也支持文件的部分導入和選擇迭代更多幫助參見&#xff1a;http://pandas.pydata.org/pandas-docs/stable/io.html參數&#xff1a;filepath_or_buffer : str&#xff0c;pathlib。str, pathlib.Path, py._path.local.Lo…

Gradle – Maven的觀點

正如我博客的讀者所知道的&#xff0c; 我有點像Maven迷 。 我從2007年8月左右開始使用Maven&#xff0c;從沒有回過頭。 但是&#xff0c;就像其他所有情況一樣&#xff0c;“變化是唯一不變的”。 現在這個領域還有其他參與者&#xff0c;Gradle看起來是最有前途的。 我決定試…

postgis安裝_從零開始,構建電子地圖網站:0_2_數據處理postgis

軟件安裝完&#xff0c;開始數據處理。從China Historical GIS下載一份數據。一、數據下載數據來源&#xff1a;China Historical GIS&#xff1a;https://sites.fas.harvard.edu/~chgis/data/chgis/v6/先下載一份時間序列數據&#xff1a;Download CHGIS V6 TIME SERIES Datah…

sar圖像去噪matlab,一種基于總曲率的SAR圖像變分去噪方法與流程

本發明屬于數字圖像處理技術領域&#xff0c;具體涉及一種基于總曲率的SAR圖像變分去噪方法。背景技術&#xff1a;&#xff1a;相干斑噪聲是合成孔徑雷達(Synthetic Aperture Radar&#xff0c;簡稱SAR)圖像的重要特征&#xff0c;嚴重影響SAR圖像的可解譯性。相干斑噪聲通常作…

Linux下用netstat查看網絡狀態、端口狀態

在linux一般使用netstat 來查看系統端口使用情況步。 netstat命令是一個監控TCP/IP網絡的非常有用的工具&#xff0c;它可以顯示路由表、實際的網絡連接以及每一個網絡接口設備的 netstat命令的功能是顯示網絡連接、路由表和網絡接口信息&#xff0c;可以讓用戶得知目…

課時2.瀏覽器和服務器(了解)

1.什么是瀏覽器&#xff1f; 瀏覽器就是由安裝在我們電腦上的一款軟件&#xff0c;QQ&#xff0c;百度影音等一樣&#xff0c;都是安裝在電腦上的一款軟件 那這些軟件之間由什么區別呢&#xff1f; 它們的區別就是它們的功能不太一樣&#xff0c;QQ是用來聊天的&#xff0c;…

微信自動回復

http://itchat.readthedocs.io/zh/latest/tutorial/tutorial0/。 這個是學習網址&#xff0c;到時候自己學一下。做個案例試試轉載于:https://www.cnblogs.com/lilinzhiyu/p/7985864.html

python 定義變量_用python解決動態的定義變量名(并給其賦值方法:大數據處理)...

前言&#xff1a;今天為大家帶來的內容是&#xff1a;用python解決動態的定義變量名(并給其賦值方法&#xff1a;大數據處理)具有很好的參考價值&#xff0c;希望對大家有所幫助。喜歡本文內容的記得點贊轉發收藏不迷路哦&#xff01;&#xff01;&#xff01;最近消費kafka數據…

appcan php圖片上傳,appcan文件上傳php,asp通用

首先說appcan內部實現了file標簽&#xff0c;我們就不用糾結這個問題了&#xff0c;還提供了上傳百分比哦&#xff0c;然后下面的方法按從上到下依次看&#xff0c;很簡單。上傳php&#xff0c;asp頁面很簡單 &#xff0c;接收‘file_data’這個文件信息就可以了&#xff0c;如…

javascript 動態修改css樣式

方法一&#xff1a;改變外聯css文件&#xff0c;這里不講這個。 方法二&#xff1a;通過改變claaName來改變樣式&#xff0c;語法&#xff1a; obj.className "style2";//或者obj.setAttribute("class", "style2"); 方法三&#xff1a;使用obj…

POJ 3225 Help with Intervals(線段樹)

POJ 3225 Help with Intervals 題目鏈接 集合數字有的為1&#xff0c;沒有為0&#xff0c;那么幾種操作相應就是置為0或置為1或者翻轉&#xff0c;這個隨便推推就能夠了&#xff0c;然后開閉區間的處理方式就是把區間擴大成兩倍&#xff0c;偶數存點&#xff0c;奇數存線段就可…

在Spring中嵌入HSQLDB服務器實例

我一直在愉快地使用XAMPP進行開發&#xff0c;直到不得不將其托管在可通過Internet訪問的某個地方&#xff0c;供客戶端進行測試和使用。 我有一個僅具有384 RAM的VPS&#xff0c;并且需要快速找到一種方法&#xff0c;因此決定將XAMPP安裝到VPS中。 由于內存不足&#xff0c;因…

python與材料計算公式_《從問題到程序:用Python學編程和計算》——2.11 補充材料-阿里云開發者社區...

本節書摘來自華章計算機《從問題到程序&#xff1a;用Python學編程和計算》一書中的第2章&#xff0c;第2.11節&#xff0c;作者 裘宗燕&#xff0c;更多章節內容可以訪問云棲社區“華章計算機”公眾號查看。2.11 補充材料本書各章的主要內容將圍繞著怎樣通過編程解決計算問題…

centos 6.9 NTP基準時間服務器配置

時間服務器端 yum install ntp -y vim /etc/ntp.conf 增加允許客戶端訪問 restrict 192.168.0.0 mask 255.255.0.0 nomodify 配置成自啟動 chkconfig ntpd on service ntpd start 客戶端配置 每天對時一次 crontab -e * 2 * * * ntpdate 192.168.139.130 轉載于:https://www.cn…

hsdfz -- 6.16 -- day1

恩這回不寫游記了 按照老師要求記錄今天的心里路程&#xff1a;這題似乎可做期望得分150->日部分分似乎不是很顯然->a題似乎是結論題&#xff0c;大力猜一波結論->過不了樣例&#xff0c;先看b題->b題動態樹&#xff0c;似乎可以肝lct->不會維護重鏈&#xff0c…

課時39.細線表格(理解)

請你設計出以下圖片里的這個樣式的表格 步驟&#xff1a; 我先來制作一個兩行兩列的表格 2.將table里的cellspacing設置成0 外邊距是不見了&#xff0c;但是和我們想要完成的圖片有一定的差距&#xff0c;我們發現這樣做出來的圖片好像是兩條線合并到了一起一樣&#xff0c;實…

強制Tomcat通過SLF4J / Logback登錄

因此&#xff0c;您將JAR可執行Web應用程序與Tomcat捆綁在一起 &#xff08;請務必先閱讀其中一個&#xff09;。 但是&#xff0c;開頭有這些煩人的Tomcat日志&#xff0c;與我們的應用程序日志無關&#xff0c;并且不可自定義&#xff1a; Nov 24, 2012 11:44:02 PM org.apa…