在 HTTP URL 中指定所需的檔案大小

在 HTTP URL 中指定所需的檔案大小

我想要一個可以下載檔案的網頁伺服器,檔案的大小由檔案名稱決定。就像是:

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 的道路,建議使用重寫規則,但我不需要它來完成我正在做的事情。

相關內容