ファイルのアップロードに問題があります。私はこの記事で説明されているまさにその方法を使用しています。著者が公開したスクリプト全体をここからダウンロードしました。
このアプリケーションは、HTML5のドラッグアンドドロップを介してファイルをロードし、次にjavascriptを介して、ajaxリクエストによってサーバーサイドにファイルを送信することを目的としています。
すべて正常に動作しますが、AJAXリクエストヘッダーからパラメーターを読み取りたいときに問題が発生します。PHPの「ファイルリーダー」のコードは次のとおりです。
$fn = (isset($_SERVER['HTTP_X_FILENAME']) ? $_SERVER['HTTP_X_FILENAME'] : false);
if ($fn) {
//above there is the upload of the file with file_put_contents function
//which actually works fine when I replace $fn with my own value and ommit the "if" condition
以前は、「X_FILENAME」ヘッダーを設定するためにXMLHttpRequest.setRequestHeaderメソッドが起動されていました。これがjavascriptです:
var xhr = new XMLHttpRequest();
// start upload
xhr.open("POST", $id("upload").action, true);
xhr.setRequestHeader("X_FILENAME", file.name);
xhr.send(file);
そして、これがその証拠です(私のChromeの「firebug」からの抜粋):
PHPで$fn変数をvar_dumpすると、ブール値のFALSEが返されます。なにが問題ですか?
PS私はWin7x64でApache2.4.3とPHP5.4.7でXAMPPv1.8.1を使用しています。最新のChromeでサイトを運営しています。ご想像のとおり、サイトはローカルホストで実行されています。php.iniファイルでは何も変更していません。すべてがデフォルトに設定されています。