PHPバージョン5.6
フレームワーク等は使用しておりません
下記のPHPで、画像を出力・ダウンロードをする処理を行っております。
PCでは、html部分のボタンをクリックすることで、画像を問題なく
出力・ダウンロードすることができますが、スマートフォン等では
画像をダウンロードが始まらずに、ブラウザで画像が開かれるのみとなります。
希望の動作としましては、スマートフォン等でもボタンクリックをすることで
画像をダウンロードさせるたいと考えています。
そもそも、Safari等でボタンクリックで画像をダウンロードという動き
ができるのでしょうか?
また、下記の$image_typeにPDFを追加すれば、PDFもアップロード
ができるのでしょうか?
文章や質問の意図が分かりずらい場合は申し訳ございません。
お力をお貸し頂ければと思います。
よろしくお願いします。
//PHP部分 <?php $fileName = test.jpg; $name = test; if(!file_exists($fileName)){ // die('ファイルが存在しません'); $fileName = '../image/nonimage.jpg'; } $image_type = exif_imagetype($fileName); switch($image_type) { case IMAGETYPE_JPEG: $imgflg = 'JPG'; break; case IMAGETYPE_GIF: $imgflg = 'GIF'; break; case IMAGETYPE_PNG: $imgflg = 'PNG'; break; default: break; } if($image_type == FALSE){ // ダウンロードするダイアログを出力 header("Content-Disposition: attachment; filename*=UTF-8\'\'" .rawurlencode($name)); // ファイルを読み込んで出力 readfile($fileName); exit(); } else { //画像ファイルをダウンロードさせる処理 if(isset($_GET['download'])) { header("Content-Disposition: attachment; filename*=UTF-8\'\'" .rawurlencode($name)); header("Content-Type: application/octet-stream"); header('X-Content-Type-Options: nosniff'); if ($imgflg === 'JPG') { header('Content-type: image/jpeg'); } else if ($imgflg === 'GIF') { header('Content-type: image/gif'); } else if ($imgflg === 'PNG') { header('Content-type: image/png'); } readfile($fileName); } //画像を出力するための処理 //元画像のサイズを取得 $imageSize = getimagesize($fileName); $w = $imageSize[0]; $h = $imageSize[1]; //サムネイルの幅を100ピクセルとして、高さを算出 $newW = 170; $newH = intval($newW / $w * $h); if ($imgflg === 'JPG') { header('Content-type: image/jpeg'); } else if ($imgflg === 'GIF') { header('Content-type: image/gif'); } else if ($imgflg === 'PNG') { header('Content-type: image/png'); } //header("Content-Disposition: attachment; filename*=UTF-8\'\'" .rawurlencode($name)); //header("Content-Type: application/octet-stream"); header('X-Content-Type-Options: nosniff'); //再サンプリング $imgThumb = imagecreatetruecolor($newW, $newH); if ($imgflg === 'JPG') { $image = imagecreatefromjpeg($fileName); } else if ($imgflg === 'GIF') { $image = imagecreatefromgif($fileName); } else if ($imgflg === 'PNG') { $image = imagecreatefrompng($fileName); } //成功した場合 imagecopyresampled()関数はtrueを返します。 if(imagecopyresampled($imgThumb, $image, 0, 0, 0, 0, $newW, $newH, $w, $h)){ //ブラウザに出力 if ($imgflg === 'JPG') { imagejpeg($imgThumb); } else if ($imgflg === 'GIF') { imagegif($imgThumb); } else if ($imgflg === 'PNG') { imagepng($imgThumb); } } imagedestroy($image); imagedestroy($imaThumb); } ?>
//html部分 <a href="../common/image.php?download" class="btn btn-default" role="button">画像をダウンロードする</a>
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/02/27 00:10