我们学校的网速限制约为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