3

我无法理解如何在我的 PHP 脚本中从 XMLHttpRequest 获取 blob。我在 JS 中有这样的代码:

var req = new XMLHttpRequest();          // create instance

var file = document.getElementById('file').files[0];     // get File Object from <input type=file />. It is picture

req.open("POST", “uploader.php”, true); // make request

req.setRequestHeader("Content-Type", file.type);   set request headers
req.setRequestHeader("Content-Length", file.size);

req.send(file);                 // send request with file-blob

if (req.readyState == 4 && req.status == 200) {
      alert("result = " + req.responseText);
}

我了解如何将 blob 发送到服务器,但不了解如何以及从何处获取它。我尝试使用$_POST,$_GET$_FILES全局数组,但它们没有任何文件。我什至尝试file像这样添加到网址:

req.open("POST", “uploader.php?file=” + file, true); 

这也不是解决方案。

在这里阅读答案,我发现我可以使用php://input. 我试过了,是的,我得到了一些原始数据。将彻底检查这个解决方案。但是想问这是唯一的方法吗?如果不是,其他是什么?那么哪一个是最正确的呢?

此外,当我设置标题时("Content-Length", file.size)console.log显示错误并显示“拒绝设置不安全的标题“内容长度”。这个标题不是必需的吗?

4

2 回答 2

1

看看下面的帖子:

使用ajax和php上传图片

您不能真正通过 XmlHttpRequest 上传 blob,但您可以使用隐藏的 iframe 创建类似 AJAX 的感觉。

看起来有一些 JQuery 插件也可以帮助你。

我希望这有帮助!

于 2012-04-12T14:37:33.347 回答
1

尝试将其用于您的标题:

req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
于 2012-04-12T14:37:46.707 回答