ファイル選択ダイアログで選択したファイルのパスの取得方法とは?

このQ&Aのポイント
  • ファイル選択ダイアログで選択したファイルのパス(絶対パス、相対パス)を取得する方法を知りたい。
  • bbs.php側のtype=file属性の要素で表示したファイル選択ダイアログから選択したファイルのパスを取得する方法がわからない。
  • ファイル選択ダイアログから選択したファイルのパスを取得する方法を教えてください。
回答を見る
  • ベストアンサー

ファイル選択ダイアログで選択したファイルのパス

下記のような2つのスクリプト間で、bbs.php側のtype=file 属性の要素で表示した ファイル選択ダイアログから選択したファイルのパス(絶対パス、相対パス)は、どこからどうやって、取得すればいいのかがわかりません。(ファイル名は取得できるのですが。) どうぞよろしくお願いします。 『bbs.php』 ※ファイルオープンダイアログの表示(POSTメソッド) ↓ <tr> <td><b>画像を添付</b></td> <td> <input type="file" name="ID_PHOTO_LOAD" tabindex="6"> </td> </tr> ※bbs.php自身に送ったPOST変数を、file_upload.phpにクエリーとして、ジャンプする ↓ $photo = $_POST['ID_PHOTO_LOAD']; // 添付画像ファイル名 if(isset($photo)) header("Location: http://5247423.raindrop.jp/tsukushinbo/bbs/file_upload.php?photo=$photo"); ------------------------------------------------------------------------------ 『file_upload.php』 <?php $photo = $_GET['photo']; //////////////////////////////////// // ローカル側でファイルをオープン // //////////////////////////////////// // ローカルのアップロード画像ファイルをリードモードでオープン(ファイルの終端まで進むと読み込みが終了する。 $parent = dirname($photo); // ファイル選択ダイアログで選択した画像ファイルが存在する親ディレクトリのパスを取得 chdir($parent); // 画像ファイルの親ディレクトリが、ローカルのカレントディレクトリになった $filename = "$photo"; // $parent(親ディレクトリの直下のファイルだから、何もつけなくてよい) $fp=fopen($filename, 'rb') or die; ←『ここでファイルオープンエラーが出ます』

  • PHP
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
回答No.1

http://www.php-labo.net/tutorial/php/upload.html この辺が参考になると思いますが、 パスなんてありません。 そもそも、PHPが見ているのは、「サーバー側のパス」であり 送ったのは、「ローカルクライアント側のパス」なので、 まったく違う世界のパスになりますので。 パスがあっても無意味です。 もし、PHPにc:\windows\....って来たとしても、 PHPからユーザーのHDDを読むわけではなく POSTにマルチパート形式で実体がくっついてくるのを読むだけですよ。

rydeen5
質問者

お礼

ご回答、ありがとうございました。

関連するQ&A

  • 画像アップロード型掲示板でのファイル選択ダイアログ

    画像アップロード型の掲示板において、ファイル選択ダイアログでファイル選択したら、 FTPサーバーにアップし、かつ、アップしたユーザー自身が、ブラウザでその画像を見れるという仕様にしたいんですが、FTPサーバー側に選択した画像ファイルが、アップされてないのです。 アップした画像をローカルのブラウザのページで見ると、x印のアイコンだけが表示されていて、中身の画像ファイルが表示されてないのです。ですが、そのx印のアイコンを右クリックすると、画像のピクセル数や、FTPサーバー先の絶対パスがちゃんと表示されてるんです。 下記のようなファイル選択ダイアログが表示されるHTMLと、そこから呼び出すPHPスクリプト において、どこか間違っているのか教えていただきたいです。よろしくお願いします。 <html> <head><title>ファイル選択ダイアログ</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <form name="form1" method="POST" enctype="multipart/form-data" action="file_upload.php"> <input type="file" name="result"> <input type="submit" name="upload" value="添付画像"> </form> </body> </html> --------------------------------------------------------------------- <?php $photo = $_POST['photo']; //////////////////////////////////// // ローカル側でファイルをオープン // //////////////////////////////////// $filename = "./files/$photo"; // $parent(親ディレクトリの直下のファイルだから、何もつけなくてよい) echo("filename=".$filename); // デバッグ用 $fp=fopen($filename, 'rb') or die; /* ファイルオープンダイアログで選択したファイルのファイル名はbbs.phpと同じディレクトリにあるfile_uproad.php から見ると、$photoにつけるパスは不要 */ /////////////////////////////////////////////////////////////////////// // FTPサーバーに接続、ログイン、サーバー側のカレントディレクトリ変更 // /////////////////////////////////////////////////////////////////////// $ftp_server="users109.lolipop.jp"; $ftp = ftp_connect($ftp_server); $res = ftp_login($ftp, "~", "~"; if($res==FALSE){ echo("FTPサーバーのログインに失敗しました。"); exit(1); } $cur = ftp_pwd($ftp); // サーバーにログイン直後のサーバー側のカレントディレクトリ echo("cur=".$cur); exit(1); ftp_chdir($ftp, $cur); // サーバー側のディレクトリを変更 ///////////////////////////////////////////// // FTPサーバーに画像ファイルをアップロード // ///////////////////////////////////////////// $remote_file = $photo; // リモート上でのファイル名指定 echo($remote_file); //if(ftp_fput($ftp, $remote_file, $fp, FTP_BINARY)){ // ローカルでオープンしている画像ファイルをバイナリモードでFTPサーバーにアップロードする if(ftp_fput($ftp, $remote_file, $fp, FTP_BINARY)){ // リモートのカレントディレクトリにアップされる echo "Successfully uploaded $file\n"; }else{ echo "There was a problem while uploading $file\n"; } //////////// // 後処理 // //////////// fclose($fp); ftp_close($ftp); //header("Location: bbs.php"); ?>

    • 締切済み
    • PHP
  • 画面遷移させずに、選択画像ファイルを渡す方法

    下記のようなPHPスクリプトにおいて、ファイル選択ダイアログで選択したファイルを bbs.php で、$photo変数をGETで受け取るにはどうすればいいのでしょうか?ちなみに今のところ、受け取った $photo変数の中身はNULLです。 GET渡し以外にも方法があれば教えていただきたいです。(たとえば、$_SESSION['']変数を利用するなど) 【bbs.php】 <td><b>画像を添付</b></td> <!-- インラインフレーム --> <td><iframe src="test.html" width="460" height="40" frameborder="no" scrolling="no"> フレームを表示できないブラウザへのメッセージ </iframe> </td> ~ <?php $photo = $_GET['photo']; // 添付画像ファイル名 ?> --------------------------------------------------------------- 【test.html】 <html> <head><title>ファイルのアップロード</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </head> <body text="white"> <table rows="1" cols="3" height="30" border="0"> <tr> <td valign="top">画像選択(10MB以下)</td> <form action="./file_upload.php" method="post" enctype="multipart/form-data" target="upload_frame"> <!-- upload_frame : ダミーフレーム --> <input type="hidden" name="max_file_size" value="10240000"> <td valign="top"><input type="file" name="sendfile" /></td> <td valign="top"><input type="submit" value="送信" /></td> </form> </tr> </table> <div id="container"></div> <iframe name="upload_frame" sytle="display:none;"></iframe> </tr> </form> </table> </body> </html> ---------------------------------------------------------- 【file_upload.php】 <?php $upload_dir = './files/'; $filename = $_FILES['sendfile']['name']; if(move_uploaded_file($_FILES['sendfile']['tmp_name'], $upload_dir.$filename)){ echo "画像".$filename."をアップロードしました。<br><br>"; // データベースの画像カラムを挿入する $con = mysql_connect("~", "~", "~"); // ローカルのMySQLデータベースサーバーに接続する mysql_select_db("~"); // データベースサーバーに存在する(myPHPAdminで作成済みの)データベースを選択する // ラストレコードの画像ファイルカラムを更新する $sql = "UPDATE bbstbl SET(photo=$_FILES['sendfile']['name']) WHERE ORDER BY sid limit 1;"; $result = mysql_query($sql, $con); $rowco = mysql_affected_rows($con); // テーブルの行数 mysql_close($con); // データベースとの接続を解除する // header("Location: bbs.php?photo=$filename"); }else{ echo "画像のアップロードに失敗しました。<br><br>"; } ?> <script type="text/javascript"><!-- var container = parent.document.getElementById('container'); image = parent.document.createElement('img'); image.src = './<?php print($filename);?>'; container.appendChild(image); //--></script> -------------------------------------------------------------

    • ベストアンサー
    • PHP
  • ファイル選択のダイアログについて

    エクセルのVBAを利用して下記サイトの「Upload Your Photo」をクリックしたいのですが、うまくいきません。 「Upload Your Photo」はflashを使っているようなので、flashを無効にすると「Upload Your Photo」 から「参照」ボタンに変わります。 こちらで<input type=file name="file" ・・・>をクリックできると思ったら、なぜかこちらでもうまく クリックできません。 htmlを確認するとjavascriptで表示を変えているようです。 分かる方いらっしゃいましたら、ご教授お願いします>< よろしくお願いします。

  • ファイル選択ダイアログからファイルのフルパスを取得したい

    Visual Basic 2008について質問があります。 フォームにテキストボックスを配置し、そのテキストボックスに ファイル選択ダイアログで選択したファイルのパスを表示させたいのですが どのようにパスを取得し表示させるのでしょうか? 初歩的な質問で申し訳ありませんがどうぞよろしくお願いします。

  • PHP ftp_fput()関数について

    下記のPHPスクリプトで、JPEGファイルをFTPサーバーにアップしようとしてるんですが、 サーバー側でエラーが出ます。どこが間違っているのか指摘していただけますか? ※ftp_chdir($ftp, $path); の$path は、相対パスか絶対パスか、URLか ※ftp_fput($ftp, $remote_file, $fp, FTP_BINARY)の、第二引数$remoto_file は、リモートでの ファイル名だけでよいのか、相対パスか、絶対パスかURLか ※ちなみに、FTPサーバーへのログインはできてます。 <?php //$photo = "akashi.jpg"; $photo = $_GET['photo']; // FTPサーバーに接続 $ftp_server="users109.lolipop.jp"; $ftp = ftp_connect($ftp_server); //$res = ftp_login($ftp, "root", " "); $res = ftp_login($ftp, " ", " "); if($res==FALSE){ echo("FTPサーバーのログインに失敗しました。"); exit(1); } //$path = "/home/users/1/raindrop.jp-5247423/web/tsukushinbo/upload_photo"; // 絶対パス $path = "../tsukushinbo/upload_photo"; // 相対パス ftp_chdir($ftp, $path); // サーバー側のディレクトリを変更 /* $cur = ftp_pwd($ftp); echo($cur); exit(1); */ // ローカル側でファイルをオープン /* $dir = dirname($photo); // ファイルあるいはディレクトリへのパスを含む文字列を受け取って、 親ディレクトリのパスを返します。 //$filename = $dir."/".$photo; echo($filename); exit(1); */ $fp = fopen("$photo", 'rb') or die; //$fp = fopen("$filename", 'r') or die; // ローカルでオープンされているファイルのポインタ。 ファイルの終端まで進むと読み込みが終了する。 // FTPサーバーに画像ファイルをアップロード $remote_file = $photo; // リモート上でのファイル名指定 if(ftp_fput($ftp, $remote_file, $fp, FTP_BINARY)){ // ローカルでオープンしている画像ファイルをバイナリモードでFTPサーバーにアップロードする echo "Successfully uploaded $file\n"; }else{ echo "There was a problem while uploading $file\n"; } fclose($fp); ftp_close($ftp); //header("Location: bbs.php"); ?>

    • ベストアンサー
    • PHP
  • ファイル選択ダイアログでファイルの種類を指定する方法

    下記のプログラムでファイル選択のダイアログを表示しますが 【ファイルの種類】をデフォルトでCSVの指定はできますか? よろしくお願いします。 <html> <body> <form enctype="multipart/form-data" action = "test_02.php" method = "post" > <input type="file" name="file_data1"> <input type="submit" name="FILE送信" value="FILE送信"> </form> </body> </html>

    • ベストアンサー
    • HTML
  • firefox  file選択ダイアログ

    firefox  file選択ダイアログ file選択ダイアログで選択ファイルのpathを取得したいです。 教えてください、宜しくお願いいたします。 ・<input type=file>では、fileの名前のみでpathが取得できません。 ・function openDialog() { dir = FileSelectDialog(); alert( dir ); } IEではダイアログが表示されますが、firefoxでは表示されません。

    • ベストアンサー
    • HTML
  • 3日で作るPHPの本で画像アップロードするには?

    3日で作るPHPの本で画像アップロードするには? フォーム内 画像 <input type="file" name="image" size="40"><br> 下記内容でファイル内に保存する $upload_file = date("ymdHis")."_".basename($_FILES["image"]["name"]); $upload_path = "<保存先のディレクトリ名>".$upload_file; $upload_url = "./images/".$upload_file; move_uploaded_file($_FILES["image"]["tmp_name"],$upload_path); 以上のように表記してありましたが、 表示の仕方が書いていなくどのように表記したよいのかサンプルなどで教えていただきたいです。 さらに上記のように保存先のディレクトリ名書を絶対相対パスで書いてみたのですが保存されませんでした。 どこを変更するとよいでしょうか

    • 締切済み
    • PHP
  • ファイル選択と同時にアップロード HTML+JS

    HTMLとJava Scriptのことを質問させてください <form>タグからファイルを選択すると同時をアップロードしたいと思っています。 複数の「ファイルを選択ボタン」を設置し、それぞれ"001.jpg"、"002.jpg"など指定の名前でアップロードしたいです。 下記のようにいくつかの<form>タグを設置し、javascriptでコントロールできるかと思いケース1のように書いた場合はうまくいったのですが、ケース2のように複数並べて記述した場合、動かなくなり困っております。 どなたか教えていただけないでしょうか? よろしくお願いいたします ケース1) <form id="upload_file1" action="file_upload.php" method="post" enctype="multipart/form-data" target="upload_frame">    <input type="hidden" name="picture_id" value="001.jpg" />    <input type="file" id="file_id_1" name="file_name" accept="image/jpeg"> </form> <form id="upload_file2" action="file_upload.php" method="post" enctype="multipart/form-data" target="upload_frame">    <input type="hidden" name="picture_id" value="002.jpg" />    <input type="file" id="file_id_2" name="file_name" accept="image/jpeg"> </form> <script> var form = document.getElementById("upload_file1"); var input = form.file_name; input.onchange = function (){ if(this.value){ form.submit(); } }; </script> ケース2) <form id="upload_file1" action="file_upload.php" method="post" enctype="multipart/form-data" target="upload_frame">    <input type="hidden" name="picture_id" value="001.jpg" />    <input type="file" id="file_id_1" name="file_name" accept="image/jpeg"> </form> <form id="upload_file2" action="file_upload.php" method="post" enctype="multipart/form-data" target="upload_frame">    <input type="hidden" name="picture_id" value="002.jpg" />    <input type="file" id="file_id_2" name="file_name" accept="image/jpeg"> </form> <script> var form = document.getElementById("upload_file1"); var input = form.file_name; input.onchange = function (){ if(this.value){ form.submit(); } }; var form = document.getElementById("upload_file2"); var input = form.file_name; input.onchange = function (){ if(this.value){ form.submit(); } }; </script>

  • include_pathについて。

    PHP 5.2以上のバージョンの話として質問をさせて頂きます。 (ローカルではWindows版XAMPPを使用。リモートはLinuxサーバー。) ----- <ファイルの位置関係> imgディレクトリ --- C.jpg (画像ファイル) mainディレクトリ --- A.php sub ディレクトリ --- funcディレクトリ --- B.php (img、main、subディレクトリは3つとも同階層) //------- (A.phpの記述) require_once '../sub/func/B.php'; //------- (B.phpの記述) echo '<img src="C.jpgのパス">'; // ←■画像Cを表示したい■ //★どう表示されるかテスト★ echo dirname(__FILE__) ;   //----- このような状況で、 A.phpにアクセスすると、★テスト★の所は、 ~/sub/func   //←のように表示される。 // つまりこれは、__FILE__ は、 // A.phpではなく、B.phpを指している。(?) と、このような時、B.phpの中で、 C画像の相対パスは、どう書いたらよろしいのでしょうか? A.phpから見た、C画像の相対パスで書いたらいい? それとも、B.phpから見たソレでしょうか? phpinfo()でinclude_pathの項目を調べると、 .:/usr/local/lib/php/~ のように書かれています。(デフォルトのままです。)

    • ベストアンサー
    • PHP

専門家に質問してみよう