
我想要一個可以下載檔案的網頁伺服器,檔案的大小由檔案名稱決定。就像是:
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 的道路,建議使用重寫規則,但我不需要它來完成我正在做的事情。