javascript - 在javascript中跨域发布二进制数据

标签 javascript ajax api binary google-chrome-extension

我正在编写一个 Chrome 浏览器扩展程序,它可以拍摄当前选项卡 View 的快照并将其上传到我无法控制的网络服务 API。 Chrome 扩展库有一个函数(chrome.tabs.captureVisibleTab。请参阅 http://code.google.com/chrome/extensions/tabs.html),它可以拍摄快照并返回数据 url 中的数据。我在如何上传数据方面陷入僵局。

我尝试编写自己的多部分表单请求并使用 ajax 请求来发布数据。但是,ajax 坚持使用 UTF-8 编码数据,而 API 坚持使用 8 位编码二进制。我想也许可以使用像 http://malsup.com/jquery/form/ 这样的文件 uploader 插件会工作,但我似乎无法将 JS 变量中的数据转换为上传者将采用的形式。

任何关于至少一条新调查路径的想法都将受到高度赞赏。

最佳答案

原来你可以做到这一点。

Chrome 有一种通过 XMLHTTPRequest 发送 blob 的方法。

这是来自 Chromium 问题跟踪器的示例代码的链接:

http://code.google.com/p/chromium/issues/detail?id=35705#c34

XMLHttpRequest.prototype.sendAsBinary = function(datastr,contentType) {
    var bb = new BlobBuilder();
    var len = datastr.length;
    var data = new Uint8Array(len);
    for (var i=0; i<len; i++) {
            data[i] = datastr.charCodeAt(i);
    }
    bb.append(data.buffer);
    this.send(bb.getBlob(contentType));
}

关于javascript - 在javascript中跨域发布二进制数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5026003/

相关文章:

JavaScript 字符串到数组并添加 bool 值

php - 更改 PHP 脚本中的变量并再次运行函数,无需重新加载页面

javascript - 无法解析 Ajax 调用错误部分中的 json 对象值

ajax - JSF ViewState 修复 IE responseXML

javascript - 在 p5.js 中使用来自 Datamuse API 的 JSON 数据时遇到问题

ios - 隐式信任 iOS 应用程序中私有(private) API 的 SSL 证书

javascript - 为什么我的 raphael.JS 圈子中仅有的一个是动画的?

php - 真正的 AJAX uploader 不会插入我的数据库

api - beego 更新 & 通过 ID 获取 1

javascript - 导航栏上的 2 个导航按钮(引导移动设备)