2009-07-24 53 views
4

我正在使用跨平臺的跨瀏覽器上傳文件的方式,以避免超時。上傳量不一定很大 - 由於上傳者的連接速度緩慢,有些上傳需要很長時間才能上傳 - 但服務器無論如何都會超時。使用ASP,ASP.NET 2.0或PHP5在IIS6上無延遲的開源文件上傳

我聽說有一些方法可以上傳文件,以便服務器決定不超時上傳。在搜索所有我可以看到的是專有上傳助手和Java和Flash(SWFUpload)小部件,這些小部件不是跨平臺的,不會上傳成塊,或者不是免費的。我想在這些平臺(ASP,ASP.NET 2.0或PHP5)中的任何一個上做到這一點,儘管我沒有在所有這些.NET類/控制器/項目/模塊/可視化工作室/編譯/等東西,所以運行在.NET 2.0上的某種可運行的完整項目會有所幫助。我可以假設PHP和ASP會更直接。

除非我完全錯過了某些我懷疑我希望的東西,否則合理的網絡上傳在任何語言或平臺上都是血腥的辛勤工作。

所以我的問題是:我如何執行Web瀏覽器上傳,跨平臺,使他們不超時,使用免費軟件?它有可能嗎?

回答

2

我想你真正想要的解決方案是獲得對服務器的更多控制權。除了在web.config或php.ini中提供的任何設置之外,IIS還有一個超時設置。如果php在fast cgi中運行,那麼你也有快速的cgi配置。

然後,您可以設置相關文件的大小,在php.ini/web.config中存儲和超時設置:

的php.ini - http://www.radinks.com/upload/config.php

的web.config -

<httpRuntime executionTimeout="1000" maxRequestLength="400000"> 

天冬氨酸.net提供了創建html模塊的可能性,這些模塊提供了一些上傳控件,例如多個上傳,直接到磁盤(較少的服務器內存使用)和上傳進度控制,其中大多數是商業化的。

0

也許你可以看看Wordpress的來源?他們有一個「標準」文件上傳器和一個Flash文件上傳器。這就是說,寫一些東西把小東西分成幾部分,然後把它們放在一起是血腥的努力工作。

一個ducttape解決方案可以將它放大一點點,然後上傳這些位並將它解包到服務器上。

1

無論上傳完成後使用何種語言處理文件,實際上傳都由HTTP服務器(Apache,IIS等)處理。我在Flash中看到的「進度條」或其他圖形上傳的方式是,對第二個腳本進行AJAX調用,該腳本上傳文件(鎖定該線程直到上傳完成),第一個腳本檢查傳入的臨時文件的文件大小已完成的百分比。

如果您在上傳時收到服務器超時,則可能是您的HTTP服務器(Apache/IIS)配置存在問題,並且沒有足夠保持連接打開日誌。如果您嘗試設置PHP文件上傳系統並收到PHP錯誤消息,則可能在PHP.ini(請參閱PHP's post on file upload pitfals)中錯誤地設置'upload_max_filesize','memory_limit'或'post_max_size'。