【问题标题】:Retrieve Uploaded Blob with PHP使用 PHP 检索上传的 Blob
【发布时间】:2014-09-25 22:03:34
【问题描述】:

我有一个创建 blob 并将其发布到 PHP 文件的脚本。这是我的代码:

HTML/Javascript:

<script type="text/javascript">
    function upload() {

    var data = new FormData();
    data.append('user', 'person');

    var oReq = new XMLHttpRequest();
    oReq.open("POST", 'upload.php', true);
    oReq.onload = function (oEvent) {
      // Uploaded.
    };

    var blob = new Blob(['abc123'], {type: 'text/plain'});

    oReq.send(blob);
}
</script>

<button type="button" onclick="upload()">Click Me!</button>

PHP:

<?php
var_dump($_POST);
?>

当我查看我的开发者控制台时,我的 PHP 页面上没有收到任何 $_POST 数据。我需要知道如何检索发布到 PHP 脚本的文本文件。

非常感谢任何帮助!

【问题讨论】:

    标签: javascript php ajax html xmlhttprequest


    【解决方案1】:

    可以从 php://input 读取 blob 中的数据,如

    <?php
    var_dump(file_get_contents('php://input'));
    

    但是,如果您想使用表单数据对象发送多条数据,它就像一个普通的多部分/表单数据帖子。所有字符串都可以通过 $_POST 获得,所有 blob 和文件都可以通过 $_FILES 获得。

    function upload() {
    
        var data = new FormData();
        var oReq = new XMLHttpRequest();
        oReq.open("POST", 'upload.php', true);
        oReq.onload = function (oEvent) {
          // Uploaded.
        };
    
        var blob = new Blob(['abc123'], {type: 'text/plain'});
        data.append('file', blob);
        oReq.send(data);
    }
    

    【讨论】:

    • 感谢上面的代码。我知道在开发人员控制台中看到文件'string(6) "abc123"' 的内容。我将如何通过$_FILES 数组访问 blob?我用oReq.setRequestHeader("Content-Type", "multipart/form-data"); 更新了我的javascript,但它仍然不允许我通过$_FILES 数组访问blob。有什么建议吗?
    • 您必须使用 FormData 对象并将 blob 附加到它并将 Formdata 对象传递给 XMLHttpRequest.send
    • 我擅长 PHP,但不擅长 javascript。您介意在答案中更新您的代码以包含您提到的 FormData 方法吗?
    • 非常感谢!我现在可以访问它了!最后一个问题。我怎么知道将这个 blob(即实际的 .txt 文件)保存在我服务器上的“文本”目录中?更清楚地说,如何将此 blob 转换为实际的文本文件?
    【解决方案2】:

    将您的 Blob 附加到 FormData 并改为发送它。

    【讨论】:

      猜你喜欢
      • 2011-11-07
      • 2014-02-17
      • 2015-11-20
      • 2013-09-26
      • 1970-01-01
      • 2014-03-29
      • 2016-08-14
      • 2020-10-10
      • 2012-08-05
      相关资源
      最近更新 更多