• ベストアンサー

HTML で任意のファイルをuploadする

御世話になります。 <input type="file"> タグを使ってファイルをサーバーに送る場合、元のファイルは必ずHTML文書と同じレベルのフォルダーつまり htdocs の中に、裸で(つまりサブフォルダー等の中ではなく)置いてなくてはならないのでしょうか? それとも、htdocs とは無関係のフォルダー内のファイルを、絶対パスを指定してアップロードする方法はあるのでしょうか? 詳しい方がいらっしゃいましたら、教えて頂きたく、お願い申し上げます。

  • HTML
  • 回答数3
  • ありがとう数4

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

  • ベストアンサー
  • dell_OK
  • ベストアンサー率13% (740/5646)
回答No.3

いただいたソースを試してみたところ、期待通りに動作したので問題なさそうです。 アップロードしたファイルの保存先「sample_data」フォルダがないとか、書き込み権限がないとか、そのようなことはないででしょうか。

papashiroSooke
質問者

お礼

ご回答有難うございます。 ご指摘いただいたように、「sample_data」フォルダがないのが原因でした。 私はフォルダーは自動的に作成されるものと思っていましたが、違ったようです。 ご協力ありがとうございました。 また、今自分が作ろうと思っているカラオケ再生システムについて、別の質問をさせてもらいたく、OKWAVEにアップする準備をしていますが、よろしければそちらの質問にもご回答いただけると有難いです。

その他の回答 (2)

  • dell_OK
  • ベストアンサー率13% (740/5646)
回答No.2

私も回答No.1さまと同じく違和感を感じています。 HTML(Webブラウザ)からファイルをアップロードする際には人間がファイルを選択する必要があります。 その時に選択できるファイルであればファイルの場所はどこでも構いません。 もし人間が選択せずに自動でアップロードしようとお考えでしたら、<input type="file">タグひとつで簡単にはできないのではないでしょうか。

papashiroSooke
質問者

お礼

早速にご回答を頂き、有難うございます。 私がこの質問をさせて頂いたのは、自分の作ったHTMLぶんしょとPHPプログラムでは、<onput type="file" ... >タグでファイルを選択しても、htdoncsにあるファイルしかアップロードされないからです。任意のフォルダーにあるファイルを指定しても、パスはすべて無視されてファイル名だけが選択されます。 以下にHTML文書とPHPのソースを張り付けておきますので、おかしなところがあればご指摘いただけると有難いです。 HTML: <!DOCTYPE HTML> <HTML> <head> <title> upload song file</title> </head> <body> <form method="POST" action="showSongVideo.php" enctype="multipart/form-data"> input song file: <input type="file" name="songFile" size="400px"><br> <input type="submit" value="send"> </form> </body> </html> PHP showSongVideo.php ソースコード <?php $fname = $_FILES['songFile']['name']; $temp = $_FILES[''songFile']['tmp_name']; $target ="./sample_data/".$fname; if(move_uploaded_file($temp, $target)) { echo "upload of ".$fname." is complete<BR>"; }else{ echo "failed upload of ".$fname."<<BR>"; } 宜しくお願いいたします。    

papashiroSooke
質問者

補足

PHPのソースコードに間違いがありました。 $temp = $_FILES[''songFile']['tmp_name']; のなかの songFile が '' と ' で囲まれていました。 これを  $temp = $_FILES['songFile']['tmp_name']; としてください。

回答No.1

あの、、、 <input type="file"> これは、クライアントサイドの話で、 >元のファイルは必ずHTML文書と同じレベルのフォルダーつまり htdocs の中に こっちはサーバーサイドの話ですよ。 >それとも、htdocs とは無関係のフォルダー内のファイルを、絶対パスを指定してアップロードする方法はあるのでしょうか? 当然あります。そもそもDocumentRootとは 何の関係もないので、 それを実行するのは「ブラウザ」なので、 クライアント側のパス構成で行うだけです。 何か大きなミスが裏に隠れている気がするので、 一度検証をしてみるのはいかがでしょうか? アップローダーをある程度作った後であれば この質問はなかった気がするので、何かずれを 感じたもので。

papashiroSooke
質問者

お礼

早速にご回答有難うございます。 サーバーサイドとクライアントサイドの違いは分かっているつもりですが、HTML 側で  <input type="file" name="songFile> を使い、 PHP側で  $fname = $_FILES['songFile']['name']; としても、$fname にはちゃんとしたパスではなく、単なる最後のファイル名だけが保存されています。

関連するQ&A

  • ファイルのアップロードについて

    初めて投稿させていただきます。 今、WindowsNT4.0+SP6,IIS+ASPでファイルのアップロードを考えています。 調査している中で、basp21を使用してファイルをアップロードするところまでわかったのですが、その後すこしつまずいています。 basp21を使用してファイルを送信する場合、HTML上に<input type="file" name="strName">というタグを明記し、ファイルを送信する場合には、このタグに該当するファイルの絶対パスを明記するとは思うのですが、これを固定のファイル名にしたいのです。 試したこととして<input type="file" name="strName" value="c:\test.text">という形で明記しましたが、表示されませんでした。 ブラウザーはIE6.0およびNetscape 6.1を使用しております。 よろしくお願いします。

  • Javaによるフォルダーのアップロード

    通常、Javaでファイルのアップロードを行う場合HTMLのINPUTタグ(Fileタイプ)でファイルを指定してからアップロードを行いますよね。これと同様のことをフォルダでやりたいんですが・・・。 もしできるのであればサンプルのページなんかを教えて頂けたらと・・・・。

  • ファイルをアップロードするには

    <input type="file"> で、ただ単に自分のPC内のファイルを サーバー上のあるフォルダにアップロードするには どうすればいいのでしょうか? よろしくお願いします。

    • ベストアンサー
    • Perl
  • レンタル共用サーバーでのファイルのアップロードについて

    レンタル共用サーバーでのファイルのアップロードについて、 教えてください。 PHPが、セーフモードで動いているレンタルサーバーで、 ファイルのアップロードを行いたいのですが、 具体的には、どうやればよいのでしょうか。 ローカル環境でファイルアップロードを行っている書籍を、 参考にしているのですが、 ローカル環境から、レンタルサーバー環境への読み替えを どのように行えばよいのかが分かりません。 恐らく、ファイルの移動先($file_dir)を書き換えるのではないか、 と検討をつけたのですが、 ファイルのアップロード自体をやったことがないため、 どう書き換えればよいか分かりません。(絶対パス? 相対パス?) <参考にした書籍のコード抜粋> $file_dir = 'C:\Program Files\Apache Group\Apache2\htdocs\image\\'; $file_path = $file_dir . $_FILES["uploadfile"]["name"]; if (move_uploaded_file($_FILES["uploadfile"]["tmp_name"], $file_path)) { <参考にしたサイト> http://z49.org/2009/04/03/199/

    • ベストアンサー
    • PHP
  • file upload でリセットが効かない

    WEBプログラミング初心者でよくわからないので、教えてください。 以下のHTMLで、一旦ファイルを参照しテキストにファイルパスが表示された後、リセットして空白にしても、アップロードをクリックすると、ファイルがアップロードされてしまいます。リセットできないのでしょうか? <form enctype="multipart/form-data" action="XXXXX.php" method="POST"> <table border="0" cellspacing="0"> <tbody> <tr> <td height="30"><input type="submit" value="ファイルをアップロード" name="btnUpload"></td> <td height="30"><input type="reset" value="リセット" name="btnReset"></td> </tr> <tr> <td height="30"><div align="center"><font size="3">在庫CSVファイル:</font></div></td> <td height="30"><input type="file" name="ZaikoUploadfile"></td> </tr> <tr> <td height="30"><div align="center"><font size="3">入庫CSVファイル:</font></div></td> <td height="30"><input type="file" name="NyukoUploadfile"></td> </tr> </tbody> </table> </form>

  • HTML の<img> タグについて

    御世話になります。 Windows10でHTMLの<img> タグを使って画像を表示させたいのですが、タグの中の src 属性に、ファイルエ・クスプローラーでShiftキーを押したままマウスの右クリックで得られるファイルのパスを張り付けると、画像が表示されず、小さなサムネイルのようなもの(決して実際の画像のサムネイルではありません)だけになります。 HTML文書と同じレベルにおいてあるフォルダー内の画像はちゃんと表示されるのですが。 これはコンピューターのあちこちにある任意の画像を表示させたければ、HTML文書と同じレベル以下のフォルダーにコピーしておかなければならないという事なのでしょうか?それとも各画像をコピーしてこなくてもそのままの位置に置いたまま表示させる方法があるのでしょうか? どなたか詳しい方がいらっしゃいましたら、詳しく教えて頂きたいと思います。 自分のソースコードを張り付けておきます。 まず表示されるもの。 <!DOCTYPE HTML> <HTML> <head> <title> example02</title> </head> <body> <img src="C:/xampp/htdocs/PHP-OOP/images/EVEdAnT.jpg" width="600" height="400"> </body> </html> 次に、表示されないもの。 <!DOCTYPE HTML> <HTML> <head> <title> example02</title> </head> <body> <img src= "images/EVEdAnT.jpg" width="600" height="400"> </body> </html> 以上、よろしくお願いいたします。

    • ベストアンサー
    • HTML
  • HTML5 で テキストファイルを読込みたい

    HTML5 を書いています。 サーバ側に hoge.txt という設定ファイルがあり、このファイルを起動時に読込みたいと考えていいます。 <INPUT TYPE="FILE"> を FileReader() で読込む確認は行えていますが、プログラブ側でファイル名を指定する方法がわかりません。 HTML5 でプログラム側からテキストファイルを開く事は可能でしょうか?

    • ベストアンサー
    • HTML
  • type="file"の<INPUT>タグに任意のファイルを指定したい

    HTMLの <INPUT>タグの "type"プロパティを、"file"とし、 この項目のデフォルトの値、もしくは JavaScriptからファイルを直接指定するということは 可能でしょうか。 ご回答をよろしくお願いいたします。

    • ベストアンサー
    • HTML
  • Perlでファイルをアップロードしたい

    えーPerlを使用してローカルからサーバーへFTPを使わず、かつパスを指定してファイル(CSV)をアップロードさせたいのですが、フォームの<input type="file"...>ではファイルを参照ボタンで指定せなだめなため使いたくないのです。一瞬フォームから<input type="hidden">を使用してファイルの中身をデータにして送りサーバでファイルを作ろうかとも考えたのですがサーバ側に負担がかかりそうで・・・教えてください。お願いします。

  • Perlでファイルをアップロードさせたい

    えーPerlを使用してローカルからサーバーへFTPを使わず、かつパスを指定してファイル(CSV)をアップロードさせたいのですが、フォームの<input type="file"...>ではファイルを参照ボタンで指定せなだめなため使いたくないのです。一瞬フォームから<input type="hidden">を使用してファイルの中身をデータにして送りサーバでファイルを作ろうかとも考えたのですがサーバ側に負担がかかりそうで・・・教えてください。お願いします。

    • 締切済み
    • CGI