dポイントプレゼントキャンペーン実施中!

現在、画像のアップロードを行うソースを書いています。
その中で、is_uploaded_fileを使っているのですが、
思うような結果が出ず、悩んでおります。動作としては、
始めにregiKというボタンが押され、sub_initメソッドの$_POST["regiK"]
に移り、kakunin()メソッドに処理が移ります。
ここでは、『確認画面では?tmpのファイル名(tmp)1』という
表示がなされます。
次にinsertボタンを押し、sub_initメソッドの$_POST["insert"]→
insert()メソッドに処理が移ると、表示されるのが、
『ここは?tmpファイル名(tmp)』となり、(tmp)の後ろに
何も表示されません。
$in_fileTmpは表示されるのに、is_uploaded_file($in_fileTmp)は
表示されないのは、なぜなのか分かりません。
PHP初心者なので、とても簡単な問題かもしれませんが、
どなたかアドバイスして頂けると嬉しいです。



<?php
class Register extends Init_class{

function Register(){
$this->Init_class();
}
function kakunin($k_fileName,$k_fileTmp,$k_type){
$_SESSION["fileTmp"] = $k_fileTmp;
$_SESSION["fileName"] = $k_fileName;
$_SESSION["type"] = $k_type;
$t_f = is_uploaded_file($_SESSION["fileTmp"]);
echo "確認画面では?".$_SESSION["fileTmp"]."(tmp)".$t_f;
}
function insert($in_fileName,$in_fileTmp,$in_type){
$t_f = is_uploaded_file($in_fileTmp);
echo "ここは?".$in_fileTmp."(tmp)".$t_f;

}

function sub_init(){
if(isset($_POST["regiK"])){
$this->kakunin($_FILES['userfile']['name'],$_FILES['userfile']['tmp_name'],$_FILES['userfile']['type']);
}else if(isset($_POST["insert"])){
$this->insert($_SESSION["fileName"],$_SESSION["fileTmp"],$_SESSION["type"]);
}else{
$this->sub_disp();
}
}
}
session_start();
$init_obj = new Register();
$init_obj->sub_init();
$init_obj->sub_main();
?>

A 回答 (2件)

> 移動または名前の変更が行われていない場合、リクエストの終了時に そのファイルはテンポラリディレクトリから削除されます。



で答えになるでしょうか?

参考URL:http://jp.php.net/manual/ja/features.file-upload …

この回答への補足

それでは、function insert内で$in_fileTmpを得たい場合は
どうすればいいのでしょうか?

補足日時:2007/10/24 20:41
    • good
    • 0
この回答へのお礼

ありがとうございます。
PHP初心者なので、勉強になりました!

お礼日時:2007/10/25 12:49

フォーム -POST-> 確認 -POST-> 保存


という処理でよいでしょうか?

セッションに保持しているのはファイル名なので、
確認ページを表示した際に、実際のファイルは消えてしまいます。
<input type="file" />にvalueを与えることはできないので、
次のページでも使用するには、どこかしらファイルを移動なり保存する必要があります。
move_upload_fileで場所を移す、もしくは
セッションにファイルのデータも入れてしまうとか・・

やり方によっては不要なファイルを削除する、という処理が必要になります。
セッションならガーベージコレクションによって削除されますが。

この回答への補足

はい。フォーム -POST-> 確認 -POST-> 保存
という処理になっています。

できれば、insert()メソッドで、is_uploaded_file()や
move_uploaded_file()を使いたいと考えています。

>move_upload_fileで場所を移す
とは、$_FILES['userfile']['tmp_name']の場所を移すということですか?

また、

>セッションにファイルのデータも入れてしまう
とは、例えば、どのようなものを使えばいいのでしょうか?

補足日時:2007/10/25 00:18
    • good
    • 0
この回答へのお礼

問題の方が解決しました!
本当にありがとうございました。

お礼日時:2007/10/25 12:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!