サーバーに保存されている画像をユーザーがダウンロードできるようにするにはどうすればよいですか? 目標は、ユーザーにリンクをクリックさせ、指定した画像のダウンロードを開始させることです。
フェイスブックの例:
サーバーに保存されている画像をユーザーがダウンロードできるようにするにはどうすればよいですか? 目標は、ユーザーにリンクをクリックさせ、指定した画像のダウンロードを開始させることです。
フェイスブックの例:
画像ではなく、別の .php ページへのリンクを作成します。次に、そのページで content-disposition ヘッダーを次のように使用します。
<?php
// Define the name of image after downloaded
header('Content-Disposition: attachment; filename="file.jpg"');
// Read the original image file
readfile('file.jpg');
?>
そこから、次のようなgetコマンドで画像のファイル名を追加するだけです
`download.php?filename=file`
次に、ファイル内でそれを次のように参照します。
readfile($_GET['filename'].'.jpg')
ダウンロードを強制するには、画像を配信する応答に特定のヘッダーを設定する必要があります。
Content-Disposition: attachment; filename=myawesomefilename.png
そうしないと、ブラウザに読み込まれます。
したがって、そのヘッダーを送信してから、そのヘッダーでその画像を配信するパスにリンクするだけです。
次のようにヘッダーを送信して、ブラウザーにダウンロードするように指示します。
header("Content-type: application/force-download")
次に、HTML などを一切使用せずに、ファイル自体のデータを送信します。
<?php
$file = 'monkey.gif';
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;
}
?>
「サーバーに保存された画像をダウンロードする」とは、「画像を表示するだけでなく、ブラウザに「名前を付けて保存」ダイアログボックスを表示させる」ことを意味する場合は、Content-Disposition: 添付ファイルヘッダーの使用を検討することをお勧めします。画像を提供するレスポンス:
Content-Disposition: attachment; filename="thefilename.jpg"
header 関数を使用して、php でヘッダーを設定できます。