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에서 파일 크기를 지정하는 정확한 방법은 중요하지 않으며, 크기가 올바른 한 수신된 파일의 데이터 내용도 중요하지 않습니다(무작위 데이터, 모두 0임, 중요하지 않음).

아파치 서버가 설치되어 있지만 분명히 모든 파일을 생성하는 것은 불가능합니다(디스크 공간이 빨리 부족해집니다).

이 동작을 달성할 수 있는 방법이 있나요? 아파치 모듈이나 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의 궤도에 올려놓은 허용된 대답은 다시 쓰기 규칙을 사용하는 것을 제안하지만 내가 하는 일에는 그것이 필요하지 않습니다.

관련 정보