- ベストアンサー
ファイルのアップロード
ファイルのアップロードは http://49uper.com/memo/web/php_fileupload.html の手順でできました。そこで、 「アップロードが完了しました」の表示が出たあとに最初のアップロードボタンがある画面に戻りたいのですが、どのようにすればよいでしょうか?ブラウザの戻るボタンとかでは動作が変です。PHP初心者のためイメージがわきません。参考HPなどありましたら宜しくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
<?php //アップロード先のディレクトリ指定 $upload_dir = '/usr/local/apache/htdocs/images/'; if($_POST['mode'] == 'upload'){ if($_FILES['upload_file']['tmp_name'] == ''){ print 'アップロードするファイルを選択してください。'; }else{ //アップロードされたファイルの拡張子 list($file_name,$file_type) = explode(",",$_FILES['tmp_name']); //アップロードされたファイルの名前を付ける $new_upload_file = $upload_dir . 'test.' . $file_type; if(move_uploaded_file($_FILES['upload_file']['tmp_name'],$new_upload_file)){ print 'アップロードが完了しました。' . $new_upload_file; exit; }else{ print 'アップロードに失敗しました。'; echo("<a href=\"$_SERVER['PHP_SELF']\">戻る</a>"); exit; } } } ?> <form action="" enctype="multipart/form-data" method="post"> <input type="hidden" name="mode" value="upload"> <input type="file" name="upload_file"> <input type="submit" value="アップロード"> </form> こんなのもアリかな。
その他の回答 (3)
- chasu_2005
- ベストアンサー率25% (1/4)
ブラウザに表示される手前でインタプリタを通ると考えてもOKですよ。。この場合2回表示されるから。。 その2回表示される手前で通りますね。^^
- chasu_2005
- ベストアンサー率25% (1/4)
<?php //アップロード先のディレクトリ指定 $upload_dir = '/usr/local/apache/htdocs/images/'; if($_POST['mode'] == 'upload'){ if($_FILES['upload_file']['tmp_name'] == ''){ print 'アップロードするファイルを選択してください。'; }else{ //アップロードされたファイルの拡張子 list($file_name,$file_type) = explode(",",$_FILES['tmp_name']); //アップロードされたファイルの名前を付ける $new_upload_file = $upload_dir . 'test.' . $file_type; if(move_uploaded_file($_FILES['upload_file']['tmp_name'],$new_upload_file)){ print 'アップロードが完了しました。' . $new_upload_file; exit;<<<<<<<<ここをとるwwこれだけでOKだよw }else{ print 'アップロードに失敗しました。'; exit; } } } ?> <form action="" enctype="multipart/form-data" method="post"> <input type="hidden" name="mode" value="upload"> <input type="file" name="upload_file"> <input type="submit" value="アップロード"> </form>
- yambejp
- ベストアンサー率51% (3827/7415)
とりあえず、PHPではなくHTMLで5秒後に飛ばす など処理をいれるのがよろしいかと。 METAが有効でないブラウザのために手書きリンクを はっておくのもわすれずに <META HTTP-EQUIV="refresh" CONTENT="5;URL=転送アドレス">
お礼
chasu_2005さん。ご教授ありがとうございます。 ちゃんとできました。(^^)v ちょっとまた、違った質問になってしまうのですが、 上記のコードの場合、最初にこのページ(仮にトップページだとします)を表示したときはPHPプログラムが読み込まれてそのあとにFormタグを読み込んで、ボタンなどが表示され、それらをクライアントに送り表示される。そして、適当なファイルを選択したあとに、アップロードボタンで<input type="submit" value="アップロード">が実行され、またトップページのPHPが実行されるといったプログラムの実行のされかた(順序)で間違いないでしょうか?つまり、どのタイミングでインラインPHPプログラムが読み込まれるのかよく理解できないのです。宜しくお願いします。