1

ここに機能するコードがありました:

if (isset($_GET['file']) && isset($_GET['name']))
{
$file = base64_decode($_REQUEST['file']);

$ch = curl_init($file);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);

$data = curl_exec($ch);
curl_close($ch);

if (preg_match('/Content-Length: (\d+)/', $data, $matches)) 
{
    // Contains file size in bytes
    $contentLength = (int)$matches[1];
}

header("Content-type: application/x-file-to-save");
header("Content-Disposition: attachment; filename=".$_REQUEST['name']);
header('Content-Length: ' . $contentLength);
header('Content-Transfer-Encoding: binary');

@readfile($file);

}

サーバーを異なるホストプロバイダーに変更したところ、コードが機能しなくなりました。クロムからダウンロードすると、ロードとロードが繰り返されますが、IDM などのダウンロード マネージャーからダウンロードすると、正しい名前とサイズが取得されますが、[開始] を押すと、再開などをサポートしていないというエラーが表示されます。 ..

繰り返しますが、別のプロバイダーを使用したときにコードが機能しました。

4

1 に答える 1

1

使用前に出力を削除するためにreadfile()使用前に出力されるエラーである可能性がありますob_clean(); flush();readfile

于 2012-07-05T04:23:47.110 に答える