upload.phpというファイル名で、
input type="file"で画像をアップロードするフォームを作り、送信されたら
最終的にディレクトリ「uploadfile」に画像が入る、というプログラムを作成しております。
(ファイルの名前は今日の日付+ランダム数字+拡張子でつけていきます)
ローカルサーバーで動かして、最初はちゃんと「アップロードしました」と表示されて、
「uploadfile」にも送信した画像ファイルが入っているのですが、
連続して画像を選択して送信すると、ファイルが送信されなくなってしまいます。
何度更新してもそれっきりで、初めてページを開いた時にしか送信されないようです。
(2回目以降は下のコードで$_FILES['UploadFile']がない&テンポラリフォルダにアップロードされなかった時に表示される「ファイルが送信されていません」が表示されるので、inputが機能していないように思えます)
できれば連続でファイルを送信できるようにしたいのですが、
input type="file"は1度しか送信できないものなのでしょうか。
もしくはPHP部分のどこかが間違っているのでしょうか?
(こちらのコードは翔泳社出版「スラスラわかるPHP」を参考にしております)
テキストの正解文と何度も確認をしたり、いろいろといじってみたのですがわかりません。
何かお気づきの点がありましたらご教授お願いします。
<head> <?php $msg = null; if( isset( $_FILES['UploadFile'] ) && is_uploaded_file( $_FILES['UploadFile']['tmp_name'] ) ){ $OldName = $_FILES['UploadFile']['tmp_name']; $NewName = date( "YmdHis" ); $NewName .= mt_rand(); switch( exif_imagetype( $_FILES['UploadFile']['tmp_name'] ) ){ case IMAGETYPE_JPEG: $NewName .= '.jpg'; break; case IMAGETYPE_GIF: $NewName .= '.gif'; break; case IMAGETYPE_PNG: $NewName .= '.png'; break; default: header( 'Location: upload.php' ); exit(); } if( move_uploaded_file( $OldName, 'uploadfile/'.$NewName ) ){ $msg = 'アップロードしました。'; } else { $msg = 'アップロードに失敗しました。'; } } else { echo 'ファイルが送信されていません'; //確認用 } ?> <body> <h1>画像アップロード</h1> <form action="upload.php" method="POST" enctype="multipart/form-data"> <input type="file" name="UploadFile"> <input type="submit" name="SubmitBtn" value="アップロード"> </form> <?php if( $msg ){ echo '<p>'.$msg.'</p>'; } ?> </body>

回答2件
あなたの回答
tips
プレビュー