• ベストアンサー

ファイルアップロードを教えて下さい。

お世話になります。 php初心者です。 初歩的な質問になると思いますが… ローカルでファイルのアップロードのスクリプトの練習をしてるのですが上手く行きません。 アップロードしたファイル名が全て同じになります。 ディレクトリ構成として htdocs  ├128.php  └phpbook(ディレクトリ)    └128-2.php ■128.phpの中身 <form action="./phpbook/128-2.php" enctype="MULTIPART/FORM-DATA" method="POST"> ファイル:<input type="FILE" name="upfile"> <input type="submit" value="アップロード"> </form> ■128-2.phpの中身 <?php if(move_uploaded_file($_FILES['upfile']['tmp_name'], "./htdocs/phpbook/") ==FALSE){ print "失敗しました。"; }else{ print ($_FILES['upfile']['name']); print "をアップロードしました。"; } ?> アップロードは出来てるのですが、phpbookディレクト内にphpbookという拡張子が何もついてないファイルがアップロードされてしまいます。 よろしくお願いします。

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

  • ベストアンサー
  • hkd9001
  • ベストアンサー率48% (99/204)
回答No.2

こんにちは。 まずは、質問内容を詳細に書いてくださり、ありがとうございます。さて… 「 128-2.php 」の2行目に「move_uploaded_file」という関数がありますが、この第2引数には、実際にアップロードしたいファイルの名前を指定する必要があります。この観点から質問者さんのコードを拝見すると、ディレクトリ「~phpbook/」迄は指定しているけれど、残念ながら肝心のファイル名が指定されていないようです。このために php が「 phpbook 」をファイル名とみなしてしまい起こっている不具合だと思われます。 ためしに2行目だけを、たとえば以下のものと入れ替えてみてください。前段の「 128.php 」が読み込んだファイル名が反映され、うまく動くと思われます: -------------------------------------------- if(move_uploaded_file($_FILES['upfile']['tmp_name'], "../phpbook/".$_FILES['upfile']['name']) == FALSE){ -------------------------------------------- もし不具合・追加でのご質問等ありましたら、お気軽にどうぞ!

oku4649
質問者

お礼

ご連絡が遅くなってしまい申し訳ありません。 分かりやすく説明頂いて、ファイルの方も無事アップする事が出来ました。 有難うございます!

その他の回答 (1)

  • umota
  • ベストアンサー率46% (150/324)
回答No.1

マニュアル 第 38章ファイルアップロードの処理 にズバリ答えが載っています。