画像をアップロードするフォームのまとめ

この記事がお役に立てたならシェアしてくれると嬉しいです。

これまでファイルをアップロードをする為のフォームを機能を書きましたが、ここでまとめておきます。


スポンサーリンク

アップロードするフォームのまとめ

例1:test12_1.php

<form action="test12_2.php" method="post" enctype="multipart/form-data">
画像ファイル<br>
<input type="file" name="pic">
<br>
<input type="submit" name="botan" value="送信">
</form>
<BR>

<?php
print '<font color="#ff0000">';
print $_GET["err"];
print '</font>';

$typelist=array( ".png",".gif",".jpg",".jpeg" );

for($count=0;$count<10;$count++)
{
     $ext="";
     for($type=0;$type<4;$type++)
     {
          if(file_exists("pic".$count.$typelist[$type]))
          {
               $ext=$typelist[$type];
               break;
          }
     }
     if(strlen($ext)>0)
     {
          print "<IMG src='pic".$count.$ext."?".date("YmdHis")."'><br>";
     }
}
?>
<BR>



例2:test12_2.php

<?php
if(!isset($_POST["botan"]))
{
     header("location: test12_1.php?err=".urlencode("送信ボタンを押してください"));
     exit;
}

$file=pathinfo($_FILES["pic"]["name"]);

if(
   strcasecmp("png",$file["extension"])!=0
&& strcasecmp("gif",$file["extension"])!=0
&& strcasecmp("jpeg",$file["extension"])!=0
&& strcasecmp("jpg",$file["extension"])!=0
   )
{
     header("location: test12_1.php?err=".urlencode("画像ファイルを送信してください"));
     exit;
}
if(strlen($_FILES["pic"]["name"])==0)
{
     header("location: test12_1.php?err=".urlencode("ファイル名がありません"));
     exit;
}

if(file_exists("pic9.png"))
{
     unlink("pic9.png");
}
if(file_exists("pic9.gif"))
{
     unlink("pic9.gif");
}
if(file_exists("pic9.jpg"))
{
     unlink("pic9.jpg");
}
if(file_exists("pic9.jpeg"))
{
     unlink("pic9.jpeg");
}

for($count=8;$count>=0;$count--)
{
     if(file_exists("pic".$count.".png"))
     {
          @rename("pic".$count.".png","pic".($count+1).".png");
     }
     if(file_exists("pic".$count.".gif"))
     {
          @rename("pic".$count.".gif","pic".($count+1).".gif");
     }
     if(file_exists("pic".$count.".jpg"))
     {
          @rename("pic".$count.".jpg","pic".($count+1).".jpg");
     }
     if(file_exists("pic".$count.".jpeg"))
     {
          @rename("pic".$count.".jpeg","pic".($count+1).".jpeg");
     }
}

if(! move_uploaded_file($_FILES["pic"]["tmp_name"],"pic0.".$file["extension"]) )
{
     header("location: test12_1.php?err=".urlencode("アップロードに失敗しました"));
     exit;
}
header("location: test12_1.php");
exit;
?>


これを実際に実行するのは
サンプル
↑です。

このサンプルは「参照…」を押して送るファイルを選択します。
ファイルを選択した状態で送信を押すとアップロードします。

アップロードされた画像ファイルは上から下へ順番に10個表示するようになっていて
10個を超えると最も古いファイルを削除して10個以上にならないようになっています。

そして、ファイルを選択していない状態で送信を押すと「ファイル名がありません」、
画像ファイルではない場合は「画像ファイルを送信してください」と
エラーが表示されます。

このプログラムでのポイントは削除以外での画像交換処理では
ブラウザの状況によってはキャッシュされてしまう為
更新した後に画像が更新前の状態で画像の表示に変更が行われない事です。

これを防ぐ為に画像表示部分のurlの後に「?」とdate()による時刻を追加しています。

■print “<IMG src=’pic”.$count.$ext.”?”.date(“YmdHis”).”‘><br>”;


こうする事でキャッシュに記録された画像を参照する事もなく新しい画像リストを表示させています。

clearstatcache()を使えばページのキャッシュをクリア出来るそうですが、使い方がイマイチ判らないのでコレが安定です。

スポンサーリンク

この記事がお役に立てたならシェアしてくれると嬉しいです。


最新記事の更新情報をお届けします。

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)