当前位置: 首页 > 知识库问答 >
问题:

通过ajax发送blob数据

赵俊晤
2023-03-14

所以我试图通过ajax将图像作为一个blob发送。blob的类型正确,大小约为4.5 kb。我试着这样发送:

document.getElementById("canvas").toBlob(function (blob) {
    var data = new FormData();
    data.append('name', name);
    data.append('program', YouTomaton.Main.get_CurrentProgram());
    data.append('image', blob);
    $.ajax({
        type: "Post",
        url: "save.php",
        data: data,
        processData: false,
        contentType: false,
        success: function (result) {
            if(result != undefined && result.length > 0)
                alert(result);
        }
    });
});

接收页面看起来像这样:

<?php
include("session.php");
writeProgram($_POST['name'], $_POST['program'], $_POST['image']);
?>

它告诉我找不到索引“图像”。所以不仅数据没有发送,甚至索引也被省略了。我做错了什么?

编辑: toBlob和toDataURL都不会产生任何东西,只是一个空的PNG。有没有办法将数据从帧缓冲区转换成Base64编码的jpg或png?

共有2个答案

卫寒
2023-03-14

我现在正在处理一个类似的问题——我使用的是PDF——以下是我的ajax工作调用:

$.ajax({
            dataType: "native",
            url: ("handle.php?filename=" + event.target.dataset.name),
            xhrFields: { responseType: "blob" },
            data: "secure=<?php echo $pass ?>",
            success: function(result){
                    console.log(result.size)
                    download(result, event.target.dataset.name, "application/pdf")
            }
        })

下载()部分是对FileSaver工具的调用——在我的例子中,这就是如何在客户端保存Blob的方法。。。

我在标记中使用data-name attr来存储文件名(不是完整路径)-希望这有所帮助!

编辑:: 很抱歉PHP混入!-该语句只是传递一个散列的随机数令牌到脚本,以确保没有请求被重复/有条不紊-等等...

宰父霖
2023-03-14

读这个。然后想想你想做什么。

如果你可以使用jQuery的插件。我建议使用FileUpload

对于HTML文件输入,最小语法如下:

<input type="file" name="fs" id="fileupload" />

和JS脚本

$('#fileupload').fileupload({
                url: "fileupload?additional=data",
                done: function (e, data) {
                    console.log(data.result);
                }
            }).prop('disabled', !$.support.fileInput)
                .parent().addClass($.support.fileInput ? undefined : 'disabled');
 类似资料:
  • 问题内容: 编辑:整个问题原来是网络问题,但是如果您看到有关如何优化流程的任何想法,我仍然会感激不尽。 我对Servlets还是很陌生,在不久的将来,我遇到了一个与性能有关的问题。我正在尝试通过Google Chrome浏览器中的XHR对象发送视频文件。视频文件存储在Blob对象中。我在JavaScript脚本中使用了此功能: 它运行良好,因为Blob到达Servlet,在这里我使用以下代码对其进

  • 问题内容: 我有一个内置的javascript,它可以执行以下操作:通过ajax-> php-> sql获取内容,并在单击内容后在index.php上显示它,将显示新内容。 现在,我想拥有一个在将内容单击到php之后发送数据的函数,该函数将在db中执行某些操作。如何创建将发送数据的功能?谢谢! 这是我的显示内容的代码: }); }` 问题答案: 您可以通过在jQuery.ajax 设置中包含值,将

  • 问题内容: 好的,我已经看到有关此问题的大量问题,但实际上没有一个答案对我有用,这是我的AJAX: var“ jsonFilters”包含一个包含以下数据的数组: 这是我的控制器: jsonFilters始终为null …我也尝试过添加到AJAX调用中…但是那实际上并没有做任何事情 最后,该类的结构如下: 关于我可能会丢失或正在发生的事情有什么想法吗? 到目前为止我尝试过的事情: 使用JSON.s

  • 问题内容: 我想使用JavaScript中的方法发送一些变量和一个字符串。 我从数据库中获取字符串,然后将其发送到PHP页面。我正在使用一个对象。 问题在于该字符串多次包含该字符,PHP中的数组将其视为多个键。 我试着更换与与功能,但它似乎并没有做任何事情。 有人可以帮忙吗? javascript代码和字符串如下所示: 字符串是: 问题答案: 您可以使用encodeURIComponent()。

  • 问题内容: 我想发送一个用JavaScript构造的数组,其中包含多个select的选定值。有没有一种方法可以使用ajax将此数组发送到php脚本? 问题答案: 您可以使用XML或JSON发回到服务器。您的javascript将必须构造该帖子,在XML的情况下,则需要您在javascript中创建它。JSON不仅轻巧,而且更易于在javascript中制作。签出JSON- PHP 来解析JSON。

  • 问题内容: 我该如何发布文件并输入字符串数据?例如,我还有许多其他 隐藏的输入数据 ,需要将它们发送到服务器, html, 使用下面的这段代码,我仅设法发送文件数据 ,而不 发送隐藏的输入数据。 jQuery, server.php 结果, 我希望得到这个结果, 可能吗? 问题答案: 添加了一个循环,并在中将更改为,以供对象引用附加到。