作者MrMarcus (请勿忘记密码)
看板PHP
标题Re: [请益] 档案上传进度条
时间Sun Apr 22 19:09:30 2007
※ 引述《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