gpt4 book ai didi

cordova - 是否可以使用 phonegap 保存 blob?

转载 作者:行者123 更新时间:2023-12-02 03:47:30 25 4
gpt4 key购买 nike

我正在使用 Sencha Touch 2.1.1。当我的应用程序请求 pdf 时,服务器会生成 pdf 的二进制数据,将其保存在缓冲区中,最后使用

将其输出到浏览器
header('Content-Length: '.strlen($this->buffer));
header('Content-disposition: attachment; filename="'.$name.'"');

当使用网络浏览器正常冲浪时,浏览器会显示其中一个“保存或打开方式”对话框。使用 Sencha Touch,我可以从服务器获取一个 blob,如下所示:

            var xhr = new XMLHttpRequest();
console.log('new XMLHttpRequest');
var url = 'http://bladhdeblah.com/ws/Download/';
var params = "loginId=" + loginId + "&sId=" + surveyId;
xhr.open('POST', url, true);
xhr.responseType = 'blob';
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.onload = function (e) {
if (this.status == 200) {
Ext.Viewport.setMasked(false);
blob = new Blob([this.response], {type: 'application/pdf'});
console.log('new Blob');
var cd = (this.getResponseHeader("Content-disposition"));
var filenameStart = cd.indexOf("\"") + 1;
var filename = cd.substring(filenameStart, cd.length - 1);
console.log('pdf filename is ' + filename);
if (Ext.os.is.Android) {
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);
}
}
else {
LRS.util.common.displayAjaxFailure(this.response, 1);
}


};
xhr.send(params)
;

我的问题是 phonegap 显然不理解“new Blob”(Android 上的 logcat 显示“Uncaught TypeError: Illegal constructor”),据我所知,在任何情况下都不可能使用 phonegap 的文件编写器写除纯文本以外的任何内容(我在其他地方已经成功完成)。

我用谷歌搜索了一下,但找不到解决方案。使用 WinJS,我已经能够获取 blob 并使用 Windows.Storage.Streams.RandomAccessStream.copyAsync 保存它,但在 phonegap 中找不到任何类似的功能。

我原以为一定有很多人希望他们的应用程序能够下载和保存图像、mp3 或其他内容,所以我希望一些 phonegap 专家能够为我指出解决方案。

我知道 phonegap 的 FileTransfer,但是,如果我理解正确,我需要向它提供保存在服务器上的文件的 url。我可以更改服务器代码以保存 pdf,但我不想进行此类更改。

顺便说一下,我的应用程序使用的是 SQLlite 数据库,所以也许解决方案是将二进制数据粘贴到某处并从那里显示?问题是我不知道如何显示它。

最佳答案

不使用 Blob,而是使用 WebKitBlobBuilder。可以找到 BlobBuilder 的一些示例 here .该链接说 BlobBuilder 已过时,但 Android(至少 4.1.2)尚未迁移到 Blob。

关于cordova - 是否可以使用 phonegap 保存 blob?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16018771/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com