我們學校的網速限制約爲7kb/s,我們有一些300Mb空間的php主機。但意識到我們的PHP腳本沒有限制!使用php下載部分文件到服務器使用php
我想下載一個文件到我的主機和我沒有在這個網站上找到一個answer。
那麼這裏是問題所在:我無法下載超過300 MB的文件,而且我希望能夠使用我的朋友的帳戶加速我的下載(當然還有他們的許可)。
我可以完全訪問計算機(在學校),可以將我的less_then_300Mb_files移動到自己,讓我下載其餘的。
要開始我寫了這個代碼:
<?php
function downloadfile ($url, $path){
$step=1024;
$fsize=0;
if(file_exists($path))
$fsize=filesize($path);
$dlsize=filesize($url);
echo "$fsize<br>$dlsize<br>";
$file = fopen ($url, "rb");
if ($file)
{
$newf = fopen ($path, "ab");
fseek($newf,$fsize);
fseek($file,$fsize);
if($newf)
while(ftell($newf)<$dlsize)
{
if($dlsize-ftell($newf)<$step)
fwrite($newf, fread($file, $dlsize-ftell($newf)), $dlsize-ftell($newf));
else
fwrite($newf, fread($file, $step), $step);
}
}
if ($file)
fclose($file);
if ($newf)
fclose($newf);
}
$url=$_GET['url'];
$exp=explode("/",$url);
downloadfile($url,$exp[count($exp)-1]);
?>
它的偉大工程中的本地文件,但fseek
&其他一些命令沒有在URL中運作良好。
我希望它能像IDM,能夠恢復和暫停文件。另外,如果可能,我希望它下載使用多個請求。
我的功能有什麼問題,以及如何下載文件的一部分?
更多信息: 基於服務器的
我要訪問的計算機是win7的是Linux操作系統。
我知道vb.net,php(!)和一點C++。
您要下載文件的服務器必須支持部分文件下載。這不是所有服務器都支持的。根據您的帶寬管理方式,即中間是否有代理,這也可能會導致部分下載。如果可以,請嘗試使用您知道支持部分下載的服務器進行測試。 – 2013-02-10 16:04:05
我如何檢查服務器是否支持部分文件下載? (順便說一下,服務器可以下載文件,但不能保證它沒有損壞!,我下載210MB的OPENCV !,其餘的40MB由idm在我家裏!) – aliqandil 2013-02-10 16:13:55
這是一個很好的問題。我能想到的唯一方法是使用支持恢復下載的瀏覽器,然後開始下載文件,停止並恢復。如果恢復正確,則服務器支持部分下載。我很確定Chrome/Chromium支持這一點。 – 2013-02-10 16:20:58