0

サーバーに保存されている画像をユーザーがダウンロードできるようにするにはどうすればよいですか? 目標は、ユーザーにリンクをクリックさせ、指定した画像のダウンロードを開始させることです。

フェイスブックの例: 画像ダウンロード

4

4 に答える 4

3

画像ではなく、別の .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')
于 2012-08-20T23:00:43.080 に答える
2

ダウンロードを強制するには、画像を配信する応答に特定のヘッダーを設定する必要があります。

Content-Disposition: attachment; filename=myawesomefilename.png

そうしないと、ブラウザに読み込まれます。

したがって、そのヘッダーを送信してから、そのヘッダーでその画像を配信するパスにリンクするだけです。

于 2012-08-20T22:57:33.577 に答える
1

次のようにヘッダーを送信して、ブラウザーにダウンロードするように指示します。

header("Content-type: application/force-download")

次に、HTML などを一切使用せずに、ファイル自体のデータを送信します。

この例は、PHP ドキュメントから抜粋したものです。

<?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;
}
?>
于 2012-08-20T22:56:55.953 に答える
1

「サーバーに保存された画像をダウンロードする」とは、「画像を表示するだけでなく、ブラウザに「名前を付けて保存」ダイアログボックスを表示させる」ことを意味する場合は、Content-Disposition: 添付ファイルヘッダーの使用を検討することをお勧めします。画像を提供するレスポンス:

Content-Disposition: attachment; filename="thefilename.jpg"

header 関数を使用して、php でヘッダーを設定できます。

于 2012-08-20T23:00:01.980 に答える