0

PHPのダウンロードを強制しようとしています。ここから: http://www.iwantanimage.com/animals/animals01.html . スターリング画像をクリックすると、次のページに 3 つのフォーマットのオプションが表示されます。

これは私のPHPコードです

<?php
header('Content-disposition: attachment; filename=sterling02md.jpg');
header('Content-type: image.jpg');
readfile('sterling02md.jpg');

header('Content-disposition: attachment; filename=sterling02lg.jpg');
header('Content-type: image.jpg');
readfile('sterling02lg.jpg');

header('Content-disposition: attachment; filename=sterling.jpg');
header('Content-type: image.jpg');
readfile('sterling02.jpg');
?> 

ただし、ダウンロードされる唯一の画像は sterling02md.jpg です。ユーザーが選択したファイルをダウンロードできるようにコードを修正するにはどうすればよいですか? ありがとうございました

4

3 に答える 3

1

コンテンツタイプが正しくありません。ファイルのmimeタイプを指定する必要があります。これは。になりますimage/jpeg。ではありませんimage.jpg

また、1つのHTTPリクエストで3つの個別のファイルを強制的にダウンロードすることはできません。一部のブラウザは複数のファイルをサポートしていますが、各ファイルを個別のMIME本文ブロックにカプセル化する必要があります。これは実行していません。

1回のダウンロードでこれら3つのファイルの.zip形式のコピーを提供するか、リンクごとに1つのファイルで3つの個別のダウンロードリンクを提供します。

于 2012-10-13T17:10:40.120 に答える
0

画像へのリンクのようなものを試すことができますdownalod.php?img=sterling02

$image = isset($_GET['img']) ? $_GET['img']  : "noimage" ;
$image .= ".jpg";

header('Content-disposition: attachment; filename='.$image);
header('Content-Type: image/jpeg');
readfile($image);

ただし、ダウンロードを強制したい場合は、

header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Transfer-Encoding: binary ");
header('Content-disposition: attachment; filename='.$image);
readfile($image);
于 2012-10-13T17:11:48.807 に答える
0

クエリ文字列で選択肢を設定しますdownload.php?option=1

if (!isset($_REQUEST['option']) {
   //redirect away
}
if ($_REQUEST['option'] == 1) {
   header(...)
   //sterling02md.jpg
}
于 2012-10-13T17:10:36.137 に答える