在 HTTP URL 中指定所需的文件大小

在 HTTP URL 中指定所需的文件大小

我想要一个可以下载文件的 Web 服务器,文件大小由文件名决定。例如:

Browse to http://mydomain.com/100MB -> receive any 100MB file
Browse to http://mydomain.com/200MB -> receive any 200MB file
Browse to http://mydomain.com/254MB -> receive any 254MB file
Browse to http://mydomain.com/10kb -> receive any 10kb file
Browse to http://mydomain.com/1GB -> receive any 1GB file
Browse to http://mydomain.com/3GB -> receive any 3GB file

在 URL 中指定文件大小的具体方式并不重要,并且接收的文件的数据内容也不重要(随机数据,全零,无关紧要),只要它具有正确的大小即可。

我安装了 apache 服务器,但显然不可能生成每个文件(很快就会耗尽磁盘空间)。

有没有办法实现这种行为?使用 apache 模块或者 PHP,或者其他方法?

答案1

使用 mod_rewrite 捕获参数:

RewriteEngine on
RewriteRule ^/?(.*)$ generate.php?size=$1 [L]

然后只需generate.php解析$_GET['size']并返回适当数量的字节。

答案2

以下是我最终完成我想做的事情的过程。

在 PHP 中这似乎很容易。学习 PHP 后,这是我创建的 generate.php 脚本:

<?php

$size = $_GET['size'];
$partsize = 1024 * 16;
$part = str_repeat(' ',$partsize);
$partcount = intval(floor($size / $partsize));
$leftover = $size - ($partcount * $partsize);

for ($i = 0; $i < $partcount; $i++) {
    echo($part);
    flush();
}

if ($leftover > 0) {
    echo(str_repeat(' ',$leftover));
}

?>

浏览至http://mydomain.com/generate.php?size=1000然后返回一个仅包含空格的 1000 字节文件。

被接受的答案让我走上了 PHP 的道路,建议使用重写规则,但对于我正在做的事情,我不需要它。

相关内容