web-dev-qa-db-ja.com

保存された名前とは異なる名前のファイルをダウンロードする

ユーザーに別の名前のファイルをダウンロードさせることは可能ですか?

たとえば、「4324ffsd34.jpg」というファイルがあります。元のファイルの名前を変更せずに、download.phpを介して別の名前(「filetodownload.jpg」など)でダウンロードしてほしい。

35
Utku Dalmaz

確かに、Content-disposition header を使用してください

header('Content-Disposition: attachment; filename="filetodownload.jpg"');

自動ダウンロードではなくデフォルトのファイル名を提供したい場合、これはうまくいくようです。

header('Content-Disposition: filename="filetodownload.jpg"');
61

もちろん、次のようなことを試してください。

$original_filename = '4324ffsd34.jpg';
$new_filename = 'my_new_filename_is_detailled.jpg';

// headers to send your file
header("Content-Type: application/jpeg");
header("Content-Length: " . filesize($original_filename));
header('Content-Disposition: attachment; filename="' . $new_filename . '"');

// upload the file to the user and quit
readfile($original_filename);
exit;

それが役に立てば幸い!

25
Frankie

Html5を使用している場合、別の方法もあります

<a href="link/to/my/file/with/a/name/i/dont/like.jpg" download="MyFile.jpg">Download</a>

乾杯:3

17
The Bumpaster
<a href="4324ffsd34.jpg" download="filetodownload">Download</a>
1

上記に問題はありませんが、追加する必要がありました。

ob_clean();
flush();

readfileの前

そうしないと、ダウンロードjpg/pngファイルを開くことができません

1
user2685840