私のアプリケーションは、http get 要求を介して urlencoded または base64encoded 文字列を送信します。文字列には、ほとんどが php ファイルからダウンロードされる画像データが含まれていますが、php が urlencoded または base64encoded の文字列から画像をダウンロードする方法がわかりません。助けてくださいみんな…迷ってる
質問する
520 次
1 に答える
2
ユーザーに画像を提供する
// we assume $imageData is PNG
$image = urldecode($imageData);
// or
$image = base64_decode($imageData);
// in case of force download change Content-Type: image/png to
// application/octet-stream and Content-Disposition: inline to attachment
header('Content-type: image/png');
header('Content-Disposition: inline; filename=' . md5($image) . '.png');
header('Content-Length: ' . strlen($image));
echo $image;
exit;
問題は、知らない場合に正しい Content-Type を検出することです。ただし、ブラウザはそれ自体で自動検出できるはずです。
キャッシュに関するいくつかの注意事項
PHP はヘッダーを暗黙的に送信するため、取得したデータがブラウザーでキャッシュされるのを防ぎます。これらのヘッダー (Cache-Control、Expires、Pragma) を手動で設定することをお勧めします。適切に機能させるには、すべての画像を一意の URL で提供する必要があります。また、セッションを開始しないようにしてください。パブリック アクセスを使用して頻繁にアクセスされる Web サイトでは、冗長なセッション ファイルで Web サーバーを簡単にあふれさせることができます。
画像をファイルに保存する
$image = urlencode($imageData);
// or
$image = base64_decode($imageData);
if (!file_put_contents('abs/path/to/save/file.png', $image)) {
throw new Exception('Image could not be saved');
}
于 2012-06-13T17:34:48.833 に答える