dポイントプレゼントキャンペーン実施中!

画像がアップロードできる掲示板をつくっています。
内容を記入して投稿する前にプレビューできるようにしたのですが
ファイルの絶対パス(c:\なんとかかんとか\gazou.jpgのようなアドレス)が取得でず困っています。

まずフォームからの内容を
$file_name= $_FILES['sendfile']['name'];
で受け取ってみました。
その後
$_SESSION['sendfile'] = $file_name;
という風にセッションに入れて別の確認ページに
飛ばすという形にしてみたのですが、
こうするとファイル名だけが取得できました。
絶対パスを取得するには「realpath()」を使うと書籍などにも書かれていたので
$file_name = realpath($_FILES['sendfile']['name']);
としたり
$_SESSION['sendfile'] = realpath($file_name);
としたりしてみたのですが
どうもうまく行きませんでした。
根本的に使い方がまちがっているのでしょうか?
アドバイスよろしくおねがいします。

A 回答 (3件)

こんにちは。



http://fol.axisz.jp/php/man/php/features.file-up …

にある内容しかサーバ側のスクリプトはわかりません。

JavaScriptにてローカル側の選択したファイルパスをサーバ側に送ることも出来ますが、お勧めできません。
(JavaScriptが使えない場合は送られてきませんし、ローカル側のフォルダ構成等を見られるのは(見ないとしても)あまり良い気分ではありません。
    • good
    • 0

私も日本語のファイル名をshift jisで受け取るときに”表”などがディレクトリセパレータと認識されるためファイル名をフルパスで取得しようとあれこれやったことがあります。


結局multipart/form-dataの場合は生のpostデータが受け取れないためあきらめました。

*php3なら標準でファイル名がフルパスになっていたと思いますが今更php3には戻れないですし。
    • good
    • 0

根本的なところから。


アップロードしたファイルは、テンポラリフォルダにテンポラリ名で保存されます。
テンポラリフォルダはphp.iniで
upload_tmp_dir = string
で指定されたものです。デフォルトはNULLで、UNIX系の場合は/tmp/になっています。
$_FILES[sendfile][tmp_name]
として臨時的に保存されます。そのファイルを自分の指定するファイルにコピー、又は移動させる必要があります。
すなわち、
$uploadfile = "格納するフォルダ".$_FILES['sendfile']['name'];
if (move_uploaded_file($_FILES[sendfile][tmp_name], $uploadfile)) {
echo "{$uploadfile}のアップロード成功";
}

となります。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!