こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

同じファイル内で、アップロードとアップロードされたファイルの処理をすることについて

OS:Window XP Pro
開発環境:Xampp(Apache + PHP + Mysql)

現在ファイルをアップロードする処理を書いているのですが、
この処理を
1)a.phpでファイルをアップロードする処理
2)b.phpでアップロードされたファイルの処理

と分けて、コーディングするのではなく

1)a.php内にファイルをアップロードする処理とアップロードされたファイルの処理を一緒に記述する

という風にできないかと思いましたので、
以下のようなコードを書いたのですが
$_FILES['upload_file']['tmp_name'])
の値を調べてみたところ、なんの値も
入っていなかったことから
このコードでは、二つの処理を一つのファイル内に書くことが
でいないようでした。

どうにかしてひとつのファイル内に
この二つの処理を同居させることはできないのでしょうか?


a.php
---------------------------------------
switch($action)
{
case "update":
if(is_uploaded_file($_FILES['upload_file']['tmp_name']))
{
$upload_file = $_FILES['upload_file']['tmp_name']);

if(file_exists(dirname(__FILE__)."/profile_phote/") == TRUE)
{
$phote_name = dirname(__FILE__)."/profile_phote/".$upload_file;
}
else
{
mkdir(dirname(__FILE__)."/profile_phote/");
$phote_name = dirname(__FILE__)."/profile_phote/".$upload_file;
}

move_uploaded_file($_FILES['upload_file']['tmp_name'],$phote_name);

"リダイレクト処理・・・"
case ...

case ...

default:
<form name="profile" action="" method="post">
<input type="file" name="upfile">
<input type="hidden" name="action" value="update">
</form>
}

投稿日時 - 2008-04-05 13:55:56

QNo.3924042

すぐに回答ほしいです

質問者が選んだベストアンサー

form にmultipart の指定をしなければ、ファイルの中身は送信されません。
$_FILES['upload_file']['tmp_name'] が空なのはそのためでしょう。
アップロードが行われていないので、結局b.php で操作しているファイルは、既にサーバー上にあったファイルということかと思いますが。
<form enctype="multipart/form-data" action="__URL__" method="POST">

http://www.php.net/manual/ja/features.file-upload.php

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

投稿日時 - 2008-04-05 22:03:05

お礼

>form にmultipart の指定をしなければ、ファイルの中身は送信されません。

おっしゃる通りでした^^;
ここを直しただけで、全てうまくいきました。

よく見たら、本にも書いてありました・・・
(申し訳ない・・・^^;)

本当にありがとうございました。
とても助かりました。

投稿日時 - 2008-04-08 03:25:10

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問