2010-08-26 60 views
0

我需要將文件上傳到我的網站,經過幾個小時的思考後,我想出了一個很好的方式。將文件上傳到帶有進度條的遠程服務器

帶有上傳表單的頁面將由前端Web服務器提供服務。爲了確保它把文件上傳到我的遠程存儲服務器,我會在標記中做到這一點:

<form action="http://storage.mysite.com/upload.php"> 
    <!-- whatever --> 
</form> 

不過就是這樣處理的,但使之類的東西一點點更加複雜。我還想要一個上傳進度條,我想我也想出了一個辦法。看看我真棒Photoshop技巧解釋它:

http://imgur.com/opk39.jpg

要獲取上傳文件的進度,我打算用PHP函數filesize();獲得該文件的文件大小,因爲它是被上傳。如果我有這個和總的filezsize我可以使用Javascript並更新頁面。但我不知道怎麼弄的上傳或者總文件大小:P

然後,當上傳完成後,我可以再次檢查文件大小,如果它是一樣的總文件大小,我知道上載完成。然後我可以運行一個Javascript函數來使用下載URL和其他一切來更新頁面。

無論如何,這就是我打算如何做到這一點。我不想使用任何奇特的閃光燈,因爲我不想依靠我的用戶安裝閃光燈。有沒有人做過類似的事情或者有過這方面的經驗可以借鑑一些建議,並讓我知道我是否正確地做了這件事?

非常感謝,非常感謝。

回答

0

我對我的PHP技能有點生疏,但我會盡力指出您的方向。由於XMLHttpRequest不支持文件上傳,因此需要使用以下兩種方法之一來解決該問題。

第一種方法是修補PHP RFC1867處理程序,可從Pdoru找到here。這種方法的問題是如果你使用共享服務器的人可能會對你使用補丁有點敏感,它還要求你依靠一些舊的C代碼來完成你的繁重任務(不是我想要調試的東西!)。

第二種方法是使用隱藏的iframe和外部腳本來輪詢進度(將整個文件和實際上傳文件的總大小寫入臨時文件並進行比較)。

我認爲選項2可能是最適合您的情況,前一段時間托馬斯拉爾森推出了一個很棒的例子,您可以找到here

湯姆的文章翻譯了這兩種方法,強烈推薦閱讀。有一個例子說明如何使用Perl腳本使用PHP頁面來實現它,我認爲這將滿足您的需求或至少解釋您的選擇。

據我所知,上述方法目前是唯一可以完成的兩種方法。

希望能讓您走上正確的道路。

祝你好運!

相關問題