Re: [請益] 檔案上傳進度條
※ 引述《leejihchi (崎)》之銘言:
: ※ 引述《MrMarcus (請勿忘記密碼)》之銘言:
: : Flash 8開始支援檔案上傳,使用Flash本身就可以做出檔案上傳、一次
: : 上傳多個檔案、限制可選取的檔案類型以及最重要的,顯示上傳進度。
: : (當然在伺服器端要有接收檔案的程式,不過伺服器端程式非常簡單,
: : 也不需要任何特殊設定)。
: : 我不太了解為什麼使用了Flash以後還要使用Ajax。所有的UI以及上傳進度
: : 在Flash本身就可以做掉了。把Ajax拉進來似乎只是讓事情複雜化。
: 照您的說法,SWFUpload似乎真的有點多此一舉。
: 很奇怪的事,我回去重新看一次Code,他的作法似乎是用Ajax來控制
: 檔案佇列,讓網頁不需要Refresh來即時更新內容,用到Flash的地方只有在
: 選擇檔案(包括限制可選取的檔案類型)以及顯示上傳進度,
: 另外一方面,他似乎是讓JS與Flash溝通,讓你可以藉由JS來取得一些Flash回
: 應的資料,讓不懂Flash的Coder也可以修改JS來達成你想要的功能。
是的,雖然沒有進去看這個JS的程式碼,但是我想他應該是把Flash當成
一個中介者。嵌入網頁中的swf檔案可以和網頁中的JS溝通,這兩者是
可以互相傳遞資料的。選取檔案的對話方塊是由Flash叫出的(或者說
是由JS去呼叫Flash裡面的FileReferenceList.browse(),這樣就會
跳出選取檔案的對話方塊),檔案上傳也是由Flash來執行,並且把
上傳的進度回報給JS,JS接收到這些資料再去處理UI要怎麼顯示的部份。
但是我個人還是覺得把JS拉進來,讓事情複雜很多。我能想到要這樣做
的理由是,有時候我們不被允許使用Flash來製作UI。當介面必須使用
HTML來製作的時候SWFpload這的作法就有他的意義在了(而且有創意)。
: 的確,伺服器端程式真的非常簡單,不用特別去寫什麼程式,這是比較奇妙的地方 :)
是啊。Flash的檔案上傳功能讓伺服器端的工作變得很簡單(在必須做出
上傳進度的狀況下)。
: 很可惜的事,對於PHP來說,如果要單純PHP+Ajax(或不+Ajax)來做出進度條,
: 目前Google到的資料只有另外安裝附加的程式或者要去Patch修改php本身,
: 我個人覺得不是很方便(不是每個Server端都可以任你去修改)
所以在被要求做出上傳進度的時候我都用Flash. XD
另外,Flash的檔案上傳除了之前提到的以外,還有一項功能是他可以
在Flash端直接知道使用者選取的檔案大小。這很好用啊。過去要限制
使用者上傳的檔案大小只有等到檔案傳到伺服器端以後才能得知,但是
這時候頻寬也已經浪費掉了。雖然無論如何伺服器端還是要檢查大小,
但可以在client端直接顯示訊息說檔案太大可以省掉不少頻寬。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.132.153.19
討論串 (同標題文章)
PHP 近期熱門文章
PTT數位生活區 即時熱門文章