在 Javascript 中从 BLOB URL 读取数据

2024-03-03

我有一个 BLOB URL,我想将其重新创建为第二个 BLOB URL,以便默认下载它。

var blob1 = new Blob(["Hello world!"], { type: "text/plain" });
url1 = window.URL.createObjectURL(blob1);

blob2=new Blob([url1], {type: 'application/octet-stream'});
url2 = window.URL.createObjectURL(blob2);

var a = document.createElement("a");
document.body.appendChild(a);
a.style = "display: none";
a.href = url2;
a.click();
window.URL.revokeObjectURL(url);

请参见 JSFiddle:

https://jsfiddle.net/7spry3jn/ https://jsfiddle.net/7spry3jn/

但这只会创建一个包含第一个 URL 的文本文件。如何从 Javascript 中的第一个 BLOB URL 读取数据并将其提供给创建第二个 BLOB?


您可以使用download属性输入anchor元素,强制下载并且您不需要创建另一个 blob。

但你需要注意浏览器支持,在这里查看所有接受的浏览器downloadattr: 我可以用吗 http://caniuse.com/#search=download

var blob1 = new Blob(["Hello world!"], { type: "text/plain" });
url = window.URL.createObjectURL(blob1);

var a = document.createElement("a");
document.body.appendChild(a);
a.style = "display: none";
a.href = url;
a.setAttribute("download","Any name");
a.click();
window.URL.revokeObjectURL(url);

并从 a 读取内容Blob您可以使用FileReader像这样:

var myBlob = new Blob(["Hello"], {type : "text/plain"});
var myReader = new FileReader();
//handler executed once reading(blob content referenced to a variable) from blob is finished. 
myReader.addEventListener("loadend", function(e){
    document.getElementById("text").innerHTML = e.srcElement.result;//prints a string
});
//start the reading process.
myReader.readAsText(myBlob);
<p id="text"></p>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Javascript 中从 BLOB URL 读取数据 的相关文章

随机推荐

  • 由点聚类着色的等高线图 matlab

    我有两个向量 它们是成对的值 size X 1e4 x 1 size Y 1e4 x 1 是否可以绘制一个contour plot某种方式通过最高密度的点来制作轮廓 即最高聚类 红色 然后在其他地方渐变颜色 如果您需要更多说明 请询问 问候
  • 引用另一个 Snakemake 规则的输入或输出文件

    如何以编程方式引用另一个 Snakemake 规则的属性 我需要更换什么
  • 为什么惰性评估有用?

    我长期以来一直想知道为什么惰性评估有用 我还没有人以一种有意义的方式向我解释 大多数情况下 它最终都会归结为 相信我 注意 我的意思不是记忆 主要是因为它可以更有效 如果不使用值 则不需要计算它们 例如 我可以将三个值传递到一个函数中 但根
  • 如何消除数字范围中的重叠 (AWK)

    我正在尝试删除文件内的重叠部分 有一堆以 A 开头的记录 并且具有 起始值 和 结束值 还有一堆以 B 开头的记录 也有范围 并且显示与以 A 开头的记录可能重叠 这个想法是从 A 中删除重叠范围 以便只存在非重叠范围 B 中的某些记录具有
  • 为什么GCC的ifstream >> double分配这么多内存?

    我需要读取一系列数字以空格分隔的人类可读文件 https earth info nga mil GandG wgs84 gravitymod egm96 ww15mgh grd z并做了一些数学计算 但我在读取文件时遇到了一些真正奇怪的内存
  • WPF 在单独的 UI 线程上加载动画? (C#)

    好的 我有一个加载动画 在填充大型数据表时运行 让用户知道程序尚未冻结 我的动画工作正常 但在数据表更新时它也会冻结 是否有某种方法可以拥有多个 UI 线程 以便在 DataTable 加载信息时动画能够继续运行 编辑 当前代码如下 pri
  • 检查 git 存储库的完整性

    当我的磁盘在访问 git 存储库时报告了一长串 不可恢复的读取错误 后 我担心我对其他存储库进行了一些推送 这些存储库可能会将错误的内容转发给它们 顺便说一句 在使用提交 推 拉访问存储库时 没有任何 git 命令报告任何错误 但访问存储库
  • PyQt QML 错误控制台丢失

    标题几乎说明了一切 假设我有这个简单的应用程序 main py gt gt gt import sys from PyQt5 QtCore import QUrl from PyQt5 QtWidgets import QApplicati
  • BeautifulSoup findall 带有类属性 - unicode 编码错误

    我正在使用 BeautifulSoup 从中提取新闻报道 仅标题 黑客新闻 http news ycombinator com到现在为止就这么多了 import urllib2 from BeautifulSoup import Beaut
  • 在具有大标题的导航控制器中时,UIRefreshControl 不会以横向方式显示

    我有一个普通的UITableViewController嵌入一 个UINavigationController which 喜欢大标题 我向表视图控制器添加了刷新控件 在 iOS 11 中的 iPhone 上 如果我以纵向模式启动应用程序
  • 列出已安装的移动配置文件

    在 OSX 上 有什么方法可以以编程方式获取计算机上安装的所有 iOS 移动配置文件的列表 这是您可以在 XCode 管理器中看到的列表 这可能是同一个列表 但如果你看一下 Library MobileDevice Provisioning
  • 为什么运行我的 Java 应用程序时 proxyHost/proxyPort 不起作用?

    我有一个与一些 REST 服务通信的 java 应用程序 我想使用 Fiddler 查看 HTTP 流量 Fiddler 充当 localhost 8888 上的代理 因此以下 Java VM 选项应该配置 java 以使用此代理 Dhtt
  • Android Studio 0.4.0 中添加新首选项屏幕的选项在哪里?

    Android Studio 0 4 0 Hello 我想在 Android Studio 中添加一个新的首选项屏幕 但是 我找不到执行此操作的菜单选项 在 Eclipse 中 您可以右键单击资源目录 新的 xml 文件 资源类型 偏好 但
  • 不小心安装了 python 3.5 与 python3.5:这不好吗?

    我运行预装了 Python 3 4 x 的 Linux Mint 我正在开始一个新项目 想要利用 3 5 左右的东西 所以我决定安装 3 5 并创建指向它的新虚拟环境 所以 我不小心输入了 sudo apt get install pyth
  • 使用 Paramiko SSH 设置 virtualenv

    我在 Windows 中使用 Python 和 Django 的经验有限 现在我试图了解如何将我的代码部署到 Ubuntu 16 04 LTS VPS 在阅读了有关 SE 的各种教程和大量答案后 我成功地取得了很大的进展 好吧 对我来说 但
  • CUT 是否支持多个空格作为分隔符?

    我有这样的文字 word1 word2 word3 word4 一对单词之间可能有多个空格 我想从每行中获取一些单词列 当我使用cat file cut d f1 2 4似乎有些字段是空间 这不是我所期望的 我知道awk可以实现这一点 问题
  • PhantomJSDriver 接受警报

    如何使用 Java 中的 PhantomJSDriver 接受警报 我正在尝试通过 YouTube 来实现这一点 我无法让它工作 我尝试使用此代码在任何驱动程序上接受 但它不适用于 PhantomJS static void confirm
  • 用不同类型的对象填充列表

    我正在研究一种推荐算法 一切正常 但现在我想将这段代码实现到我的开发团队的分支中 我将从顶部开始 我的算法可以推荐两种类型的对象 餐厅和菜肴 餐厅 public class Restaurant public Guid Id get set
  • SignalR Core - 错误:Websocket 已关闭,状态代码:1006

    我在 Angular 应用程序中使用 SignalR 当我销毁 Angular 中的组件时 我也想停止与集线器的连接 我使用命令 this hubConnection stop 但我在 Chrome 控制台中收到错误 Websocket 已
  • 在 Javascript 中从 BLOB URL 读取数据

    我有一个 BLOB URL 我想将其重新创建为第二个 BLOB URL 以便默认下载它 var blob1 new Blob Hello world type text plain url1 window URL createObjectU