みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

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

解決済みの質問

POSTでファイルアップロード

fedora7、PHP5、Mysql5を使っています。

画像ファイルやコメント、タイトル等を<form method="POST" action="regchk.php">で、渡すreg.phpファイルと、それお受け取り画像ファイルサイズやコメント文字数等をチェックするregchk.phpファイルがあります。
reg.phpの<form >部分が、
<form method="POST" action="regchk.php" enctype="multipart/form-data">
<table >
<tr>
<th>写真のファイル</th><td><!-- MAX_FILE_SIZE must precede the file input field -->
<input type="hidden" name="MAX_FILE_SIZE" value="100000" />
<input type="file" name="uploadfile" size="60"></td>
</tr>
<tr>
<th>タイトル </th><td><input type="text" name="title" size="60" maxlength="50"></td>
</tr>
<tr>
<th>コメント </th><td><textarea rows="7" cols="60" name="comment"></textarea></td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" name="reg" value=" 登録 ">
<input type="reset" value=" クリア ">
</td>
</tr>
</table> 
</form>です。
そして、regchk.php の$_POST['uploadfile'] で、画像ファイルがアップされているか、チェックしたいのです。以下のように。
$uploadfile = $_POST["uploadfile"];

echo $uploadfile."<br>"; ----→空白が表示される
//エラーコード 検証用
echo $_FILES['uploadfile']['error']."<br>"; ---→ 0が表示される
echo $_FILES['uploadfile']['tmp_name']."<br>"; --→ /usr/tmp/phpアルファベット
echo $_FILES['uploadfile']['size']."<br>"; ----→9894
//入力データのチェック
$errmsg = "";
if (strlen($uploadfile) == 0) {
$errmsg .= "写真のファイルが指定されてません.<br />";
}
↑このif文でエラー文字列が、$errmsg に入る。
アパッチのerror_logを見ると、
Notice: Undefined index: uploadfile in /home/user1/public_html/regchk.php on line 5,
と、出ており、5行目とは $uploadfile = $_POST["uploadfile"]; のことです。
自分は、やり方が根本的に間違っているのでしょうか?
ご教授の方、よろしくお願いします。

投稿日時 - 2008-02-28 21:18:55

QNo.3818518

すぐに回答ほしいです

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

$_POSTではなくて、$_FILESにすればいいんじゃないでしょうか?
multipartで送られてくると思うので、$_FILESの方にファイルデータが入っていると思います。

投稿日時 - 2008-02-29 00:31:04

お礼

ありがとうございます。

自分は $_POSTも$_FILESも両方使おうとしていました。
まったく $_FILES の役割を理解していなかったようです。

がんばりたいと思います。

投稿日時 - 2008-02-29 09:13:58

ANo.1

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

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

回答(3)

ANo.3

皆さんの回答ですでに問題は解決していると思いますが、
自分も同じ内容で悩んでいたときに参考にしたサイトを載せておきます。

全体的にポップな雰囲気なので、
見やすいですし、内容もわかりやすく解説されていて、
とてもおすすめです^^

参考URL:http://masago.kir.jp/php20030814.php

投稿日時 - 2008-02-29 16:12:27

お礼

ありがとうございます。

私も上記のサイトは拝見しましたが、いまいち理解してなかったようです。

投稿日時 - 2008-03-02 22:11:53

ANo.2

ANo.1の方も書かれていますが、アップロードされたファイルは$_FILES['userfile']['tmp_name']の名前でサーバに保存されています。それをmove_uploaded_file()で自分で保存したい場所に移動させます。マニュアルのサンプルコードを熟読してください。

  http://www.php.net/manual/ja/features.file-upload.php (Example#2のコード)

投稿日時 - 2008-02-29 02:18:42

お礼

ありがとうございます。

やはり、自分は根本的に間違ったやり方をしていたのですね。
上記のサンプルも読んだつもりでした。

もっとがんばります。

投稿日時 - 2008-02-29 09:21:22

あなたにオススメの質問