現在PHPを勉強中の者なのですが、アップロードされたファイルを出力する方法が分からないので教えて欲しいです。
以下が現時点で僕が作成したコードなのですが、練習である機能を作っていてその一部のファイルアップロードの処理部分になります。他の部分に関しましては、コードが長くなるため省略させて頂こうと思います。
html
1 2<form method="post" enctype="multipart/form-data"> 3 <div><input type="file"name="new_img"></div> 4 <div><input type="submit" value="送信"></div> 5</form> 6<table> 7 <tr> 8 <td><?php echo $img; ?>"></td> 9 </tr> 10</table>
php
1 $tmp_file = $_FILES['new_img']['tmp_name']; 2 $file_name = 'img/' . $_FILES['new_img']['name']; 3 4//同名ファイルがアップロードされた場合の関数定義 5function unique_filename($org_path, $num=0){ 6 if( $num > 0){ 7 $info = pathinfo($org_path); 8 $path = $info['dirname'] . "/" . $info['filename'] . "_" . $num; 9 if(isset($info['extension'])) $path .= "." . $info['extension']; 10 } else { 11 $path = $org_path; 12 } 13 14 if(file_exists($path)){ 15 $num++; 16 return unique_filename($org_path, $num); 17 }else { 18 return $path; 19 } 20 21} 22if (is_uploaded_file($tmp_file) === TRUE){ 23 if ( move_uploaded_file($tmp_file,unique_filename($file_name )) === TRUE){//同名ファイルがアップロードされた場合の処理 24 //MIMEタイプ指定 25 $fp = finfo_open(FILEINFO_MIME_TYPE); 26 $mime_type = finfo_file($fp, $file_name); 27 finfo_close($fp); 28 $img = file_get_contents($faile_name); 29 header('Content-Type: '.$mime_type); 30 31 if(strpos($mime_type,'jpeg')||strpos($mime_type,'jpg')||strpos($mime_type,'png') === FALSE){ 32 unset($file_name); 33 $error_msg[] = 'ファイル形式が異なります。画像ファイルはJPEG又はPNGのみ利用可能です。'; 34 } 35 } else { 36 $err_msg[] = 'ファイルがアップロードできません'; 37 } 38} else { 39 $err_msg[] = 'ファイルが選択されていません'; 40}
自分としましては、「$img = file_get_contents($faile_name);」「header('Content-Type: '.$mime_type);」
ここの「$img」にファイルのパスを読み込み、header関数にてmime_typeを指定しhtmlにて、echoで出力すれば良いのではないかと思っていたのですが、エラーが発生し表示できていない状態です...
どなたか教えて下さる方いましたら、ご教授下さい...
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/11 11:04 編集
2017/08/11 11:25