SWFUpload 文件上傳插件常用的配置講解

上傳文件swfUpload 插件:

基本的文件上傳涉及到的四個(gè)文件? (還有一個(gè)處理數(shù)據(jù)的php文件? 這里沒有涉及到)

html頁(yè)面:

upload_window.html

js文件:

swfupload.js

handlers.js

fileprogress.js


第一:從html頁(yè)面出發(fā):

重要的是將頁(yè)面加載時(shí)間中的var setting={}這個(gè)大對(duì)象中的參數(shù)設(shè)置好? 以下都是這個(gè)對(duì)象里面的常用配置 非常重要

首先需要將swfupload.swf加載

在 var? setting={} 這個(gè)大對(duì)象里面加flash_url:值

如: flash_url: "<tpl>$siteurl_static</tpl>/assets/uc/js/swfupload.swf",

然后需要將上傳的路徑加入 如: upload_url: "http://load.zom.com/u.do?uploadkey=" + uploadkey + "&ck=" + ck + "&cc=" + cc,(java的上傳路徑)

相關(guān)的設(shè)置常用的有:

file_size_limit? (設(shè)置上傳的大小)? ? file_types(設(shè)置文件上傳的類型)file_types_description(設(shè)置文件上傳描述)

file_upload_limit (設(shè)置文件上傳的數(shù)量限制)file_queue_limit (設(shè)置文件隊(duì)列數(shù)量限制)

prevent_swf_caching : false? (在相關(guān)的swf文件增加隨機(jī)參數(shù)避免Flash被緩存)

debug:false

按鈕的相關(guān)配置:

button_width: "200",

button_height: "50",

button_text_left_padding: 16,

button_text_top_padding: 7,

button_cursor:? button_cursor 指定鼠標(biāo)懸停在Flash按鈕上時(shí)的光標(biāo)樣式,可用值為SWFUpload.CURSOR里定義的常量。如:button_cursor: SWFUpload.CURSOR.HAND,

button_action(設(shè)置只能上傳一個(gè)文檔的限制:--》button_action: SWFUpload.BUTTON_ACTION.SELECT_FILE)

之后就是設(shè)置一些事件處理函數(shù)? 這些都是在? handlers.js 里面相應(yīng)的函數(shù)

file_dialog_start_handler: fileDialogStart,(設(shè)置文件對(duì)話開始函數(shù))

file_queued_handler: fileQueued,(設(shè)置文件隊(duì)列函數(shù))

file_dialog_complete_handler: fileDialogComplete,(設(shè)置文件對(duì)話完成處理函數(shù))

file_queue_error_handler: fileQueueError,(設(shè)置隊(duì)列錯(cuò)誤處理函數(shù))

upload_start_handler: uploadStart,(設(shè)置開始上傳函數(shù))

upload_progress_handler: uploadProgress,(設(shè)置上傳進(jìn)度處理函數(shù))

upload_error_handler: uploadError,(設(shè)置上傳錯(cuò)誤處理函數(shù))

upload_complete_handler: uploadComplete,(設(shè)置上傳完成處理函數(shù))

upload_success_handler: uploadSuccess(設(shè)置上傳成功處理函數(shù))

以上的配置都是在頁(yè)面自動(dòng)加載函數(shù)的setting大對(duì)象里面需要配置的基本參數(shù)

除了以上這些還有下面相應(yīng)的非常關(guān)鍵的配置

別忘記:在setting大對(duì)象結(jié)束之后 在自動(dòng)加載函數(shù)結(jié)束之前還有swfu = new SWFUpload(settings);? 實(shí)例化一個(gè)對(duì)象

var setting還有比較重要的配置? 如下:

1.關(guān)于上傳進(jìn)度的配置是關(guān)鍵:

在var setting={}這個(gè)大對(duì)象里面設(shè)置一個(gè)元素:

custom_settings: {

? ? ? ? ? ? ? ? ? ? progressTarget: "fsUploadProgress"

?},

progressTarget的值(即fsUploadProgress)是文件上傳進(jìn)度的顯示 將html里面設(shè)置相應(yīng)的位置放id="fsUploadProgress"

如:<div class="progressbar progressbar-0" id="fsUploadProgress">

? ? ? ? ? ? <span class="prog-num">0</span>

? ? ? ? </div>

span標(biāo)簽里的0就是從0開始進(jìn)行上傳? 0就是初始的顯示進(jìn)度

2:關(guān)于上傳的按鈕設(shè)置?

在 var setting={} 這個(gè)大對(duì)象里面設(shè)置? button_placeholder_id : "spanButtonPlaceHolder"

需要將html相應(yīng)的上傳按鈕加上相應(yīng)的id="spanButtonPlaceHolder"

如:<div id="upload_doc" class="up-btn"><i >上傳文檔</i><span id="spanButtonPlaceHolder"></span></div>

成功上傳需要將相應(yīng)的數(shù)據(jù)進(jìn)行處理:

在html頁(yè)面中需要寫ajax進(jìn)行數(shù)據(jù)的處理~

如:

//成功后調(diào)用

function agree_upload(){

? ? ? ? ? ? var doc_id=$('.doc_title').attr('id');

? ? ? ? ? ? if(doc_id>0){

? ? ? ? ? ? ? ? uploadFinish(doc_id);

? ? ? ? ? ? ? ? parent.DOC88Window.close();

? ? ? ? ? ? }else{

? ? ? ? ? ? ? ? alert('您還未選擇重新上傳的文檔');

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? function uploadFinish(new_p_id) {

? ? ? ? ? ? var old_p_id = "<tpl>$p_id</tpl>";

? ? ? ? ? ? $.ajax({

? ? ? ? ? ? ? ? url: "/ucr/doc.php?act=save_upload",

? ? ? ? ? ? ? ? type: "post",

? ? ? ? ? ? ? ? data: {

? ? ? ? ? ? ? ? ? ? old_p_id: old_p_id,

? ? ? ? ? ? ? ? ? ? new_p_id: new_p_id

? ? ? ? ? ? ? ? },

? ? ? ? ? ? ? ? dataType: "json",

? ? ? ? ? ? ? ? success: function (msg) {

? ? ? ? ? ? ? ? ? ? if (msg.result == 1) {

? ? ? ? ? ? ? ? ? ? ? ? alert("數(shù)據(jù)正確");

? ? ? ? ? ? ? ? ? ? } else {

? ? ? ? ? ? ? ? ? ? ? ? alert("數(shù)據(jù)錯(cuò)誤");

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? }

? ? ? ? ? ? });

? ? ? ? }

第二:因?yàn)閔tml頁(yè)面中setting配置中有相應(yīng)的函數(shù)處理配置? 涉及到handler.js函數(shù)赃承,所以接下來(lái)到handler.js文件的處理配置

根據(jù)html頁(yè)面的配置 處理函數(shù)的順序進(jìn)行相應(yīng)的配置

首先是fileQueue函數(shù)? 文件排隊(duì)函數(shù):

需要設(shè)置一個(gè)變量 關(guān)于flash動(dòng)畫的函數(shù)

var stats = swfu.getStats();

根據(jù)需要將文件上傳隊(duì)列數(shù)量進(jìn)行限制

if (stats.files_queued > 1) {

? ? ? ? ? ? alert("您的附件不能超過(guò)1個(gè)");

? ? ? ? ? ? ? ? ? ? return false;

? ? }

接下來(lái)是fileQueueError函數(shù)? 文件排隊(duì)錯(cuò)誤函數(shù):

根據(jù)需要將相應(yīng)的設(shè)置放在這個(gè)函數(shù)里面

可以放在try catch函數(shù)里面? ? 設(shè)置的限制如下:

? ? ? switch (errorCode) {

? ? ? ? ? ? case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:

? ? ? ? ? ? ? ? alert('單個(gè)文件大小不要超過(guò)50MB');

? ? ? ? ? ? ? ? break;

? ? ? ? ? ? case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:

? ? ? ? ? ? ? ? alert('不能上傳空文件');

? ? ? ? ? ? ? ? this.debug("Error Code: Zero byte file, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);

? ? ? ? ? ? ? ? break;

? ? ? ? ? ? case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:

? ? ? ? ? ? ? ? alert('文件類型錯(cuò)誤');

? ? ? ? ? ? ? ? break;

? ? ? ? ? ? default:

? ? ? ? ? ? ? ? if (file !== null) {

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? this.debug("Error Code: " + errorCode + ", File name: " + file.name + ", File size: " + file.size + ", Message: " + message);

? ? ? ? ? ? ? ? break;

? ? ? ? }

接下來(lái)是uploadStart函數(shù)? 文件上傳開始函數(shù):

設(shè)置相應(yīng)的功能按鈕的變換? 比如上傳開始(走到這個(gè)函數(shù)時(shí) 可以將相應(yīng)的上傳按鈕改成上傳中 并且禁止點(diǎn)擊 就是禁用功能 加上一個(gè)取消上傳按鈕 )

可以將上傳的文件的名稱和文件格式顯示出來(lái)?

如:

$("#upload_doc i").html("上傳中");

? ? $('#cancel_upload').html('取消');

$("#upload_doc").attr('disabled','disabled');

var name = file.name;

? ? ? ? ? ? ? ? $('.doc_title').html(name);

? ? ? ? var format = file.type;

? ? ? ? format = format.toLocaleUpperCase();

? ? ? ? format = format.replace('.', '');

? ? ? ? $('.doc_format').html(format);?

接下來(lái)是uploadProgress函數(shù)? 文件上傳進(jìn)度函數(shù):如:

var percent = Math.ceil((bytesLoaded / bytesTotal) * 100);//上傳的進(jìn)度

? ? ? ? var progress = new FileProgress(file, this.customSettings.progressTarget);

? ? ? ? progress.setProgress(percent);

? ? ? ? progress.setStatus("正在上傳");

接下來(lái)是uploadSuccess函數(shù)? 文件上傳成功函數(shù)

然后是uploadError函數(shù)? 上傳失敗函數(shù):

其他相關(guān)的函數(shù)可以根據(jù)需要進(jìn)行設(shè)置

第三:fileprogress.js文件? 關(guān)于文件上傳進(jìn)度? 關(guān)鍵的是:

FileProgress函數(shù)的設(shè)置:

如:

function FileProgress(file, targetID) {

? ? ? ? this.fileProgressID = file.id;

? ? ? ? this.fileProgressWrapper = document.getElementById(this.fileProgressID);

? ? ? ? if (!this.fileProgressWrapper) {

? ? ? ? ? ? ? ? ? this.fileProgressWrapper = document.createElement("li");

? ? ? ? ? ? ? ? ? this.fileProgressWrapper.id = this.fileProgressID;

? ? ? ? ? ? ? ? ? document.getElementById(targetID).appendChild(this.fileProgressWrapper);

? ? ? ? }

? ? ? this.setTimer(null);

}

FileProgress.prototype.setProgress = function (percentage) {}? 里面進(jìn)度樣式的處理

如:

if (percentage <= 5) {

? ? ? ? ? ? ? ? $(".progressbar").addClass('progressbar-5');

? ? } else if (percentage <= 10) {

? ? ? ? ? ? ? ? $(".progressbar").addClass('progressbar-10');

? ? }......

第四:swfupload.js文件? ? 幾乎不用修改 可以將不用的函數(shù)刪減

有很詳細(xì)的講解 鏈接:https://www.cnblogs.com/myboke/p/5579236.html

http://www.runoob.com/w3cnote/swfupload-guide.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末踱讨,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子舰绘,更是在濱河造成了極大的恐慌,老刑警劉巖葱椭,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件捂寿,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡孵运,警方通過(guò)查閱死者的電腦和手機(jī)秦陋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)治笨,“玉大人驳概,你說(shuō)我怎么就攤上這事】趵担” “怎么了抡句?”我有些...
    開封第一講書人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)杠愧。 經(jīng)常有香客問(wèn)我待榔,道長(zhǎng),這世上最難降的妖魔是什么流济? 我笑而不...
    開封第一講書人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任锐锣,我火速辦了婚禮,結(jié)果婚禮上绳瘟,老公的妹妹穿的比我還像新娘雕憔。我一直安慰自己,他們只是感情好糖声,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開白布斤彼。 她就那樣靜靜地躺著分瘦,像睡著了一般。 火紅的嫁衣襯著肌膚如雪琉苇。 梳的紋絲不亂的頭發(fā)上嘲玫,一...
    開封第一講書人閱讀 49,111評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音并扇,去河邊找鬼去团。 笑死,一個(gè)胖子當(dāng)著我的面吹牛穷蛹,可吹牛的內(nèi)容都是我干的土陪。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼肴熏,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼鬼雀!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起蛙吏,我...
    開封第一講書人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤源哩,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后出刷,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡坯辩,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年馁龟,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片漆魔。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡坷檩,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出改抡,到底是詐尸還是另有隱情矢炼,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布阿纤,位于F島的核電站句灌,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏欠拾。R本人自食惡果不足惜胰锌,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望藐窄。 院中可真熱鬧资昧,春花似錦、人聲如沸荆忍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至叽唱,卻和暖如春屈呕,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背尔觉。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工凉袱, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人侦铜。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓专甩,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親钉稍。 傳聞我的和親對(duì)象是個(gè)殘疾皇子涤躲,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 單例模式 適用場(chǎng)景:可能會(huì)在場(chǎng)景中使用到對(duì)象,但只有一個(gè)實(shí)例贡未,加載時(shí)并不主動(dòng)創(chuàng)建种樱,需要時(shí)才創(chuàng)建 最常見的單例模式,...
    Obeing閱讀 2,056評(píng)論 1 10
  • //Clojure入門教程: Clojure – Functional Programming for the J...
    葡萄喃喃囈語(yǔ)閱讀 3,622評(píng)論 0 7
  • 總結(jié)了一些開發(fā)中常用的函數(shù): usleep() //函數(shù)延遲代碼執(zhí)行若干微秒俊卤。 unpack() //函數(shù)從二進(jìn)制...
    ADL2022閱讀 454評(píng)論 0 3
  • 今天看電影《岡仁波齊》嫩挤,故事平淡溫如水,卻關(guān)乎一顆朝圣的心消恍!感受到了他們對(duì)生命的博愛岂昭,對(duì)萬(wàn)事萬(wàn)物的包容、內(nèi)...
    Fineyoga樂(lè)樂(lè)閱讀 189評(píng)論 0 0
  • 余生_9cd2閱讀 254評(píng)論 0 0