0

値を渡すために ajax 呼び出しを使用しています。私はそれを行っており、その値を取得して、テーブルで特定の画像を検索したいと考えています。

ダウンロードするイメージにたどり着くと、うまくいきません。php.ini ファイルを調べたところ、allow_furl_open がオフになっています。多分これが犯人だと思います。更新する必要があることはわかっているため、mysql ビットは無視してください。これは私のコードではないため、変更されます。

これがコードです。

if (isset($_POST['download'])) {
$sql = "SELECT `imageURL` FROM `digital_materials` WHERE `digital_materials`.`id` = '$id'";
$record = mysql_query($sql);
$row = mysql_fetch_assoc($record);

$fileName = $row['imageURL'];
$fileURL = 'images/products/' . $fileName;
header('Content-Type: application/octet-stream');
header("Content-Transfer-Encoding: Binary");
header('Content-Disposition: attachment; filename=' . $row['imageURL']);
readfile($fileURL);
exit();

}

これは機能するはずです。問題はありますか?

4

1 に答える 1

1

Marc B のコメントで述べたように、ajax を介してファイルをダウンロードすることはできません。Ajax はネットワーク リクエストを送信者に返すだけです (つまり、jQuery ajax には、リクエストの結果を含む成功ハンドラー関数があります: http://api.jquery.com/jQuery.ajax/ )。考えられる解決策の 1 つは、ダウンロード リクエストをトリガーする php の URL で新しいウィンドウを開くことです。JavaScript ソリューションは次のとおりです。

window.open('dynamic-image-url.php');

別の解決策は、target="_blank" 属性を持つアンカー タグを使用することです。

<a href="dynamic-image-url.php" target="_blank">Download Image</a>

以下は、php の readfile ドキュメントから取得した画像を返すための 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;
}
?>

編集* * 変数を投稿するフォームの例を追加

<form action="dynamic-image.php" method="post" target="_blank">
   <input type="hidden" name="id" value="<?php echo $value; ?>" />
   <input type="submit" value="Download Image" />
</form>

次に、変数を $_POST['id'] として参照します。これは、フォームの name 属性の値だからです。

$_GET パラメータを使用すると、次のようになります。

<a href="dynamic-image-url.php?id=<?php echo $id; ?>" target="_blank">Download Image</a>

id はクエリ文字列パラメーターの名前であるため、$_GET['id'] を使用して PHP の値を参照します。

于 2012-11-20T16:51:35.707 に答える