Ajax 二进制响应

2024-03-09

你好,我想知道是否有办法在 AJAX 中传输二进制响应?这将是一个最终的解决方案,否则我需要将二进制图像实现为一个文件,然后将该文件流式传输给具有不同 URL 的用户。

new Ajax.Request('/viewImage?id=123', {
  // request returns a binary image inputstream
  onSuccess: function(transport) {
      // text example
      // alert(transport.responseText)

      // QUESTION: is there a streaming binary response?
      $('imgElem').src = transport.responseBinary;
  },
  onFailure: function(transport) {
      // handle failure
  }
});

可能无法stream二进制数据,但您可以使用 Ajax 检索二进制数据。

这可以使用以下两种方法之一来实现:Javascript类型化数组 https://developer.mozilla.org/en/JavaScript_typed_arrays或 XMLHttpResponse覆盖Mime类型 https://developer.mozilla.org/en/DOM/XMLHttpRequest#overrideMimeType%28%29黑客。阅读 MDN 上的一篇好文章 – 这些示例取自那里:发送和接收二进制数据 http://developer.mozilla.org/en/DOM/XMLHttpRequest/Sending_and_Receiving_Binary_Data

类型化数组方法如下所示:

var oReq = new XMLHttpRequest();
oReq.open("GET", "/myfile.png", true);
oReq.responseType = "arraybuffer";

oReq.onload = function (oEvent) {
  var arrayBuffer = oReq.response; // Note: not oReq.responseText
  if (arrayBuffer) {
    var byteArray = new Uint8Array(arrayBuffer);
    for (var i = 0; i < byteArray.byteLength; i++) {
      // do something with each byte in the array
    }
  }
};

oReq.send(null);

IE 移动支持不稳定但正在改善.

第二种方法使用名为 overrideMimeType 的 XMLHttpRequest 方法来允许二进制数据不加修改地传递。

var req = new XMLHttpRequest();
req.open('GET', '/myfile.png', false);
// XHR binary charset opt by Marcus Granado 2006 [http://mgran.blogspot.com]
req.overrideMimeType('text\/plain; charset=x-user-defined');
req.send(null);
if (req.status != 200) return '';
// do stuff with req.responseText;

您将获得一个未解析的二进制字符串,您可以在其上使用var byte = filestream.charCodeAt(x) & 0xff;检索特定字节。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ajax 二进制响应 的相关文章

随机推荐

  • 将元素添加到 xml 文件

    我正在尝试从 C csproj 文件添加和删除元素 该文件的部分内容如下所示 有人可以告诉我如何做以下两件事吗 添加一个元素 如下所示 该行显示 我想添加 这 删除一个元素 例如 假设我想删除 I 行 已在下面指出
  • 应用程序操作:通过动态快捷方式在 Google Assistant 中显示小部件

    考虑到官方文档和代码实验室中显示的选项 我的问题相对简单 但我一直在努力使其工作 我想通过动态快捷方式触发一个小部件在 Google Assistant 中显示 看起来非常简单 但是当实现这样的功能和动态快捷方式时
  • Rails 3 ajax 更新部分在没有页面刷新的情况下不起作用

    我正在开发 Rails 3 购物车 我有一个目录页面 其中显示所有产品 还有一个部分显示购物车的要点 因此 用户添加到购物车的任何产品都会显示在此购物车部分中 现在 这不起作用了 将产品添加到购物车后 我必须点击刷新 否则部分不会更新 这是
  • 如何从不同的活动获取主启动活动的意图?

    我目前正在进行另一项活动 如何获取主启动 Activity 的 Intent Intent launchIntent getIntent 上式中 显然getIntent 不会让我得到正确的Intent我需要的 我怎样才能获得主启动Activ
  • 导出 DLL 中的静态数据

    我有一个 DLL 其中包含一个静态类members I use declspec dllexport 为了利用这个类methods 但是 当我将其链接到另一个项目并尝试编译它时 我收到静态数据的 无法解析的外部符号 错误 例如 在DLL中
  • Python 小版本之间的 Wheel 不兼容性

    我正在 PyPi 上发布一个包 它将支持 Python 3 6 并且希望构建尽可能少的轮子 我读过Python 的轮子包装系统 https packaging python org guides distributing packages
  • javascript函数(输入大于今天日期的日期)

    我是 javascript 的初学者 我需要一个函数来检测用户是否输入日期 并在日期小于今天的日期时提醒他 HTML
  • 将角色混合到可调用对象中

    理论上 你可以在运行时将角色混合到对象中 https docs raku org language objects Mixins of Roles 所以我尝试用一 个函数来做到这一点 my random f gt arg Just arg
  • 使用 JavaScriptSerializer() 反序列化 JSON 文件

    我将反序列化的 json 文件的结构如下所示 id 1lad07 text test url http twitpic com 1lacuz width 220 height 84 size 8722 type png timestamp
  • 如何过滤数据透视表中按多个条件过滤的记录 - laravel eloquent collections

    我正在改建一个图书推荐个人网站 我想通过多个标准来过滤书籍 例如 我想展示所有哲学和科幻小说的书籍 彼得 瓦特的 盲视 就是一个例子 现在我只能做一个标准过滤器 我有一个数据透视表 示范书 public function genres re
  • 如何在没有主键的情况下对表或视图进行休眠映射[重复]

    这个问题在这里已经有答案了 可能的重复 Hibernate与无PK https stackoverflow com questions 767277 hibernate and no pk 有人知道如何在没有主键的情况下对表或视图进行休眠映
  • Autosys 中 ON ICE 和 ON HOLD 作业之间的区别

    搁置工作和冻结工作有什么区别 ON HOLD 和 ON ICE 作业之间有两个显着的区别 这决定了何时使用它们 当 ON HOLD 作业被推迟时 如果满足其启动条件 它将运行 而 ON ICE 作业在放入 OFF ICE 后 即使满足其启动
  • Django 模型的类型注释

    我正在开发一个 Django 项目 由于这是一个新项目 我希望用 python 3 6 类型注释对其进行完全注释 我正在尝试注释模型 但我很难找到一个好的方法 让我们以IntegerField举个例子 我看到有两种注释选择 number 1
  • window.opener.location.href 适用于 IE,但不适用于 Chrome 或 Safari

    我一直在研究这个问题 虽然各个论坛上有很多关于类似问题的帖子 但没有一个问题或解决方案与我的完全匹配 我有一个应用程序 已成功使用下面的函数在完成弹出窗口后重定向回父窗口 最近我一直在调查与其他浏览器的兼容性 允许系统通过iPad使用 发现
  • 从列表理解创建有序字典?

    这是列表理解 https stackoverflow com a 29135851 156458 L k d k v for k v in l iteritems for l in L where L是有序字典的列表 即 collectio
  • 出现错误:对象不支持属性或方法“分配”

    我正在使用这个 jquery 弹出插件从这个链接 https web archive org web 20170808060543 http dixso github io 80 custombox 在我的 WordPress 网站上 它在
  • JNI 在应用程序中检测到错误:调用 JNI NewGlobalRef 时出现未决异常 java.lang.ClassNotFoundException:

    我正在开发 VPN 应用程序并遵循以下代码强天鹅 https github com vmlinz strongswan android应用程序 我已经使用了这个应用程序的代码并且它正在加载 so通过 JNI 文件 我已经从 Strongsw
  • 从 mysql 转变为 mysqli

    我对 PHP 中的 mysqli 接口有点困惑 当我昨天开始将旧的 mysql 代码更改为 mysqli 时 文档引导我走上了这条路 prepare bind params and execute 在我努力处理结果的过程中 我最终编写了自己
  • 压缩旋转日志文件的实用程序?

    我正在使用 NLog 进行日志记录 并且需要对其在创建后不久生成的旋转文本文件的负载进行压缩 NLog 应该在未知的未来某个时候支持此功能 但是是否有某种实用程序可以独立执行此操作 从 NLog 4 0 开始支持压缩存档文件 请参阅新闻帖子
  • Ajax 二进制响应

    你好 我想知道是否有办法在 AJAX 中传输二进制响应 这将是一个最终的解决方案 否则我需要将二进制图像实现为一个文件 然后将该文件流式传输给具有不同 URL 的用户 new Ajax Request viewImage id 123 re