Angeben der gewünschten Dateigröße in der HTTP-URL

Angeben der gewünschten Dateigröße in der HTTP-URL

Ich hätte gern einen Webserver, von dem ich Dateien herunterladen kann, deren Größe durch ihren Dateinamen bestimmt wird. So etwas wie:

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

Die genaue Angabe der Dateigröße in der URL ist nicht wichtig, ebenso wenig der Dateninhalt der empfangenen Datei (zufällige Daten, alles Nullen, egal), solange sie die richtige Größe hat.

Ich habe einen Apache-Server installiert, aber es ist offensichtlich nicht möglich, alle Dateien zu generieren (mir würde schnell der Speicherplatz ausgehen).

Gibt es eine Möglichkeit, dieses Verhalten zu erreichen? Mit einem Apache-Modul oder vielleicht PHP oder auf eine andere Weise?

Antwort1

Verwenden Sie mod_rewrite, um das Argument zu erfassen:

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

Dann müssen Sie nur noch die entsprechende Anzahl an Bytes generate.phpanalysieren und zurückgeben.$_GET['size']

Antwort2

Und so habe ich letztendlich das getan, was ich wollte.

Es scheint, dass dies in PHP sehr einfach war. Nachdem ich PHP gelernt hatte, ist dies das Skript generate.php, das ich erstellt habe:

<?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));
}

?>

Durchsuchen nachhttp://mydomain.com/generate.php?size=1000Gibt dann eine 1000-Byte-Datei zurück, die nur Leerzeichen enthält.

Die akzeptierte Antwort, die mich auf die Spur von PHP gebracht hat, schlägt die Verwendung einer Umschreiberegel vor, aber für das, was ich mache, brauche ich sie nicht.

verwandte Informationen