繁体   English   中英

javascript对象的XMLHttpRequest setRequestHeader方法不起作用

[英]javascript object's XMLHttpRequest setRequestHeader method doesn't work

我的文件上传有问题。 我使用的描述非常方法文章。 我从HERE下载了作者发布的整个脚本。
该应用程序旨在通过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

之前,启动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的“萤火虫”的作物):

当我在PHP中var_dump $ fn变量时,它返回布尔值FALSE。 怎么了?

PS我在Win7 x64上使用XAMPP v1.8.1与Apache 2.4.3和PHP 5.4.7。 我在最新的Chrome上运行该网站。 您可以猜测该站点正在localhost上运行。 我没有更改php.ini文件中的任何内容 - 一切都设置为默认值。

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

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

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

新版本的Apache和PHP 5.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'));
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM