0

ユーザーがそのファイルをダウンロードするときにファイルの名前を変更するようにコードを実装したい

例として

$uploaddir="files/userid/";
$filename=rand(1000,9999).time().rand(1000,9999);
move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile);

このコードファイルを使用してアップロードすると、このような名前でサーバーに保存されます

23451232325654.pdf

しかし、ユーザーにはlearn_php.phpのような論理名があります

ユーザーがこのファイルをダウンロードしたい場合、ダウンロードするためのこのリンクが表示されます

www.example.com/files/userid/23451232325654.pdf

しかし、このファイルは 23451232325654.pdf としてダウンロードしたときにユーザーの PC に保存されませんが、上記のように論理名として保存したい Learn.php

4

1 に答える 1

0

これは問題なくできます。最初に正しいヘッダーを送信するダウンロード スクリプトが必要です。この場合、ヘッダーは次のようになります。

header('Content-Disposition: attachment; filename="learn_php.pdf"');

php ドキュメントの例 1 を参照してください。

そのため、ファイルに直接リンクする代わりに (例: http://website.com/content/129312.pdf )、ダウンロード スクリプトにリンクします (例: http://website.com/download.php? file=129312.pdf )。

ダウンロードでは、最初にヘッダーが送信され、次にファイルの内容が送信されます。

セキュリティに関する必須の注意:$_GETファイル名をサニタイズせずに から直接使用すると、大きなセキュリティ上の問題が発生します。この方法で行う場合は、サニタイズする必要があります。

于 2012-04-25T07:12:20.163 に答える