[PHP-users 12642] Re: ファイルアップロードの処理方法について

冨永 圭祐 php-users@php.gr.jp
Mon, 20 Jan 2003 11:08:11 +0900


冨永です。

しょうなりさん、お返事有り難うございました。


ちょっと気になっていたのですが
|サーバーが受け取ったアップロードファイルは
|そのスクリプトが終わると同時にサーバーから消えます。

やはりそういう事なのですね・・・。

ということで、PHPのサンプルを見ると
そのスクリプトが終了する前に
COPYコマンドを使って、ファイルのコピーを行うことになるのですね。

実際、私が処理をしたいのは
|1から3のフォームの画面遷移についてですが、
|毎回サーバーに送信され、PHPで処理され次のフォーム画面が出る、
|ということでしょうか?

というかたちになりますが
2から3への値引き渡し(毎回サーバーに送信)する方法が
いまいち分からないというのが現状です。

1から2へは渡す方法は分かっています。実現できております。


ソース****************************************************
フォーム1
<script language=javascript>
function onNextStep() {
	document.formLinkSubmit.trigger_name.value = '次';
	document.formLinkSubmit.fullpath_name.value = document.formLinkSubmit.UserFile.value;
	document.formLinkSubmit.target = '';
	document.formLinkSubmit.action = 'test2.php';
	document.formLinkSubmit.submit();
}

</script>

<body>
<FORM name=\"formLinkSubmit\" ENCTYPE=\"multipart/form-data\" METHOD=\"POST\">
<input type=hidden name=trigger_name value=\"\">
<input type=hidden name=fullpath_name value=\"\">
Send this file : <BR>
<INPUT TYPE=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"10000000\">
<INPUT NAME=\"UserFile\" TYPE=\"file\" SIZE=32 ACCEPT=\"image/jpeg,image/gif,image/txt\">
<input type=\"button\" name=\"NextStep\" value=\"次\"
onClick=javascript:onNextStep()>
</body>


フォーム2
<script language=javascript>
function onNextStep() {
	document.formLinkSubmit.trigger_name.value = '次次';
	document.formLinkSubmit.UserFile.value = '" . $UserFile ."';
	document.formLinkSubmit.UserFile_name.value = '" . $UserFile_name ."';
	document.formLinkSubmit.target = '';
	document.formLinkSubmit.action = 'test3.php';
	document.formLinkSubmit.submit();
}
</script>

<body>
<FORM name=\"formLinkSubmit\" ENCTYPE=\"multipart/form-data\" METHOD=\"POST\">
<input type=hidden name=trigger_name value=\"\">
<input type=hidden name=UserFile value=\"\">
<input type=hidden name=UserFile_name value=\"\">
See the file : <BR>
<img src = " . $fullpath_name . " >
<!--
<INPUT TYPE=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"10000000\">
<INPUT NAME=\"UserFile\" TYPE=\"file\" SIZE=32 ACCEPT=\"image/jpeg,image/gif,image/txt\" >
-->
<input type=\"button\" name=\"NextStep\" value=\"次次\"
onClick=javascript:onNextStep()>


フォーム3
if (empty($UserFile)) {
	echo "EMPTY";
}
else {
	// もし、ファイル名を決めたいなら、ここで決める。
	// ここでは適当なファイル名。
	//$UpFile = tempnam("/tmp","upload_");
	$UpFile = "/data/AMS/test/" . $UserFile_name;
echo $UpFile . "<BR>";

	if (is_uploaded_file($UserFile)) {
		if (copy($UserFile , $UpFile )) {
	      print "ファイルコピー成功。 $UserFile -> $UpFile<BR>\n";
		} else {
	      print "ファイルコピー失敗。 $UserFile -> $UpFile<BR>\n";
	    }
		unlink($UserFile);

	} else {
	      print "ERROR";
	}

}
***************************************************************
上記ソースを元に実行すると
フォーム3では、
	} else {
	      print "ERROR";
	}
のところに入ってきてしまいます。
(ファイルが存在しないため)

フォーム2からフォーム3への値引き渡し(データの送信方法)について
アドバイスをお願い致します。


また、仕様に無理があるようでしたら、お教え下さい。


お手数ですが、宜しくお願い致します。


On Fri, 17 Jan 2003 22:52:59 +0900
φ(._.) ml@webappli.jp (しょうなり [ml]) 様 wrote:

|しょうなりです。
|
|スクリプトが書かれてませんのでちゃんと対応されているのかもしれませんが、
|気になった点を書いてみます。
|
|
|冨永 圭祐 さんは書きました:
|>仕様で、
|>1フォーム目で、画像選択
|>2フォーム目で、画像確認
|>3フォーム目で、画像登録 となりそうなので・・・
|
|この1から3のフォームの画面遷移についてですが、
|毎回サーバーに送信され、PHPで処理され次のフォーム画面が出る、
|ということでしょうか?
|
|ファイルアップロード処理では
|サーバーが受け取ったアップロードファイルは
|そのスクリプトが終わると同時にサーバーから消えます。
|(※普通は消される前にどこか別の場所にコピーするか、
|  データベースに格納するようにします)
|
|
|上記の仕様の場合ですと(僕の解釈でですが)
|次の通りになっているのではないでしょうか?
|
|1のフォームでファイル送信したのでしたら、
|2のフォームを表示させるスクリプト処理後サーバーから消えてしまいます。
|3のスクリプトでファイルをコピーしようとしてもしようがありません。
|
|もしこの投稿の内容に該当しているようでしたら、
|http://www.php.net/manual/ja/features.file-upload.php
|こちらのページをもう一度読み直して、
|仕様を練り直した方がいいと思います。
|
|
|僕の勘違いでしたら読み捨ててください。
|
|-- 
|print <<<SIGNATURE
|	しょうなり@信州 肥田昌也
|	Email:     shounari@webappli.jp
|	HomePage:  http://www.webappli.jp/ => JSlayout 評価版
|SIGNATURE;
|
|
|_______________________________________________
|PHP-users mailing list
|PHP-users@php.gr.jphttp://ns1.php.gr.jp/mailman/listinfo/php-users


+---------------------------------------------+
 冨永 圭祐  <k-tominaga@act-design.co.jp>
+---------------------------------------------+