1

サイトでホストされている場合、ボタンをクリックするだけでユーザーが画像をダウンロードできるように設定しましたが、外部画像では機能しません。最初にサーバー上のフォルダーにコピーせずに、(URL を使用して) 外部画像でこれを行うことは可能ですか?

これは、自分のサイトの画像に使用するものです。

$str = $_GET['image'];
$img_name = substr(strrchr($str, '/'), 1);
$image = "../u/i/".$img_name;

if (file_exists($image)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($image));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Content-Length: ' . filesize($image));
    ob_clean();
    flush();
    readfile($image);
    exit();
}
4

1 に答える 1

1

http://php.net/manual/en/function.readfile.phpでわかるように、外部 URL を使用できます。

fopen ラッパーが有効になっている場合は、この関数で URL をファイル名として使用できます。ファイル名の指定方法の詳細については、fopen()を参照してください。さまざまなラッパーが持つ機能、使用方法に関する注意事項、提供される定義済み変数に関する情報へのリンクについては、サポートされているプロトコルとラッパーを参照してください。

これは PHP 設定です: http://www.php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen

(その場合、コードを変更する必要はありません。)

于 2012-06-07T06:10:49.023 に答える