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

标签 php javascript drag-and-drop

我在上传文件时遇到问题。我正在使用 THIS 中描述的方法文章。我从HERE下载了作者发布的整个脚本.
该应用程序旨在通过 HTML5 拖放加载文件,然后通过 javascript,通过 ajax 请求将它们发送到服务器端。
一切正常,但当我想从 AJAX 请求 header 中读取参数时出现问题。这是 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” header 。这是 JavaScript:

var xhr = new XMLHttpRequest();

// start upload
xhr.open("POST", $id("upload").action, true);
xhr.setRequestHeader("X_FILENAME", file.name);
xhr.send(file);

这是证明(来 self 的 Chrome 浏览器的“ Firebug ”):

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

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

最佳答案

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

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

并且您的 PHP 中不需要任何更改。

关于php - javascript 对象的 XMLHttpRequest setRequestHeader 方法不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13771777/

相关文章:

c - Gtk 中的拖放问题

cocoa - 在 MonoMac NSView 中接收拖放?

php - 如何在 Laravel 5.2 中使用多对多多态关系

php - ASP.Net MVC或Zend框架。您的意见是什么?

javascript - 使用 materialize css 中的响应表功能调整小屏幕上的 td 宽度

javascript - 这种 String.Format 叫什么?

javascript - 道场拖放: don't want to sort items

php - 无法在 xampp 服务器中启动 Apache 模块

从操作 mysql 操作调用的 php 文件不起作用

javascript - Phonegap应用程序与php服务器通信而不使用ip地址