如題,要上傳1G以上的文件,用PHP如何能快速實現?


swfupload,apc,uploadprogress等php 大文件上傳問題 http://blog.csdn.net/jiedushi/archive/2008/05/21/2466157.aspx

PHP大文件上傳實現 http://bbs.phpchina.com/thread-38232-1-1.html


這個比較難,國內的網速還沒有條件能讓php快速上傳1G的文件,需要設置很大的內存,及很長的執行時間才有可能上傳成功,很顯然,這是不合理的。

=========不知道為什麼有個消息通知,然後就打開了這個問題,那就順手更新一下吧。

發展到了今天,瀏覽器大部分都支持html5了,那就可以利用html5的特性,做分片上傳了。


不考慮瀏覽器兼容性可以切片上傳。。當然再加上swfupload之類的就沒有瀏覽器兼容問題了
用HTML,FLASH,HTML5方式實現體驗都不太好,最好是藉助於控制項來實現。QQ郵箱,百度網盤都是藉助於控制項來實現的。推薦使用Xproer.HttpUploader6,它算是文件傳輸領域比較專業的產品了,有開發文檔和示例,整合比較簡單,界面很漂亮。主要功能:

1.支持文件,文件夾上傳和續傳

2.支持保留文件夾層級結構3.支持主流瀏覽器內核:ie, edge,firefox,chrome,Opera4.支持國產瀏覽器:ie6,ie7,ie8,ie9,ie10,ie11,firefox,chrome 45+,Maxthon(遨遊),TT瀏覽器,QQ瀏覽器,世界之窗瀏覽器,360安全瀏覽器,360極速瀏覽器,搜狗高速瀏覽器,獵豹安全瀏覽器,百度瀏覽器,115極速瀏覽器,Opera 23資源下載:cab安裝包(x86),cab安裝包(x64),crx安裝包,nat安裝包,xpi安裝包,exe安裝包,開發文檔

示例下載(.NET):SQL2005示例

示例下載(JSP):SQL2005示例,MySQL示例,Oracle示例示例下載(PHP):MySQL示例

分片!!!現在基本不用考慮瀏覽器兼容性問題了吧。


1G文件 ,走FTP吧
lighttpd 有支持大文件的上傳,原理類似lighttpd先接收完文件 再把請求和文件路徑轉發到後端的fastcgi/php
個人覺得上傳1G文件的情況本身不應該出現。作為實現方式,還不如直接前台動態配合虛擬帳戶FTP實現。
  1. 類似proftpd支持mysql保存帳戶信息,可以臨時開闢帳號和磁碟空間。
  2. 客戶端ftp上傳
  3. 上傳結束,激活文件操作事件。


研究過 PHP 的大文件上傳,除了了 swfuoload 或者其他擴展,基本上沒有什麼太好的解決方案,單純使用 http 上傳 1G 可能會超時和 IO Error,建議研究一下新浪微博的上傳視頻功能,上傳速度很快,這個可能要和運營商開通專線。

除了代碼部分,還需要修改相應的配置文件php.ini

file_uploads = on ;是否允許通過HTTP上傳文件的開關。默認為ON即是開

upload_max_filesize = 2m ;允許上傳文件大小的最大值。默認為2M,可修改為需要的值。

如果超過8M,還需要修改以下值max_execution_time = 600 ;每個PHP頁面運行的最大時間值(秒),默認30秒max_input_time = 600 ;每個PHP頁面接收數據所需的最大時間,默認60秒memory_limit = 8m ;每個PHP頁面所吃掉的最大內存,默認8M
推薦閱讀:
相关文章