Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php javascript对象';s XMLHttpRequest setRequestHeader方法不';行不通_Php_Javascript_Drag And Drop - Fatal编程技术网

Php javascript对象';s XMLHttpRequest setRequestHeader方法不';行不通

Php javascript对象';s XMLHttpRequest setRequestHeader方法不';行不通,php,javascript,drag-and-drop,Php,Javascript,Drag And Drop,我上传文件有问题。我正在使用文章中描述的方法。我从下载了作者发布的整个脚本。 该应用程序旨在通过HTML5拖放加载文件,然后通过javascript,通过ajax请求将文件发送到服务器端。 一切正常,但当我想从AJAX请求头读取参数时,问题就出现了。下面是PHP“文件阅读器”的代码: 前面,启动XMLHttpRequest.setRequestHeader方法来设置“X_FILENAME”头。下面是javascript: var xhr = new XMLHttpRequest(); // s

我上传文件有问题。我正在使用文章中描述的方法。我从下载了作者发布的整个脚本。
该应用程序旨在通过HTML5拖放加载文件,然后通过javascript,通过ajax请求将文件发送到服务器端。
一切正常,但当我想从AJAX请求头读取参数时,问题就出现了。下面是PHP“文件阅读器”的代码:

前面,启动XMLHttpRequest.setRequestHeader方法来设置“X_FILENAME”头。下面是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中,当我var_转储$fn变量时,它返回布尔值FALSE。怎么了


另外,我在Win7 x64上使用Apache2.4.3和PHP5.4.7。我用最新的Chrome浏览器运行这个网站。正如您所猜测的,该站点正在本地主机上运行。我没有更改php.ini文件中的任何内容-所有内容都设置为默认值。

下划线似乎不是标题名的有效字符。使用连字符,它会工作得很好

xhr.setRequestHeader("X-FILENAME", file.name);

并且不需要对PHP进行任何更改。

Apache和PHP5.3的新版本

   $UploadDir=dirname(__FILE__).'/'.;
   $Datos_cabecera=getallheaders();
    $fn = (isset($_SERVER['HTTP_X_FILENAME']) ? $_SERVER['HTTP_X_FILENAME'] : false);
    if (!$fn) {$fn=$Datos_cabecera['X_FILENAME'];} //New versions of Apache and PHP 5.3
    if ($fn) {
    file_put_contents($UploadDir.$fn,file_get_contents('php://input'));
    }

您的解决方案非常有效!非常感谢。在第一种方法中,我没有注意到你评论中的最后一行,尽管我注定要失败。使用英语中的变量和注释。
   $UploadDir=dirname(__FILE__).'/'.;
   $Datos_cabecera=getallheaders();
    $fn = (isset($_SERVER['HTTP_X_FILENAME']) ? $_SERVER['HTTP_X_FILENAME'] : false);
    if (!$fn) {$fn=$Datos_cabecera['X_FILENAME'];} //New versions of Apache and PHP 5.3
    if ($fn) {
    file_put_contents($UploadDir.$fn,file_get_contents('php://input'));
    }