网站的视频标记元素的结构如下:
<video id="playerVideo" width="450px" autoplay="autoplay" height="338px" style="height:100%;width:100%;" class="mejs-rai-e" src="blob:http%3A//www.example.com/d70a74e1-0324-4b9f-bad4-84e3036ad354"></video>
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,src元素的url预先配置为blob.是否有像脚本或视频下载器插件的方法来定位文件并下载它?
此问题与旧浏览器中的如何更新(与Safari 5.1.4相关)有关并受其启发
给定一个<input type="file">具有元件files包含属性File从继承的对象Blob,是有可能创造一个ArrayBuffer和转换ArrayBuffer到一个data URI从一个Blob或File对象,而无需使用FileReader?
到目前为止已尝试过方法
WebSocket使用.binaryTypeset 创建一个mock "arraybuffer",创建一个MessageEventwith event.dataset to Fileobject; 结果是处理程序的File对象onmessage
设置原型File为ArrayBuffer,Uint8Array; 结果是Uncaught TypeError: Method ArrayBuffer.prototype.byteLength called on incompatible receiver #<ArrayBuffer>(),Uncaught TypeError: Method get TypedArray.prototype.byteLength called on incompatible receiver [object Object]()
设置File在 …
我想知道是否有可能将数据从javascript流式传输到浏览器的下载管理器.
使用webrtc,我将数据(从文件> 1Gb)从浏览器传输到另一个.在接收器端,我将所有这些数据存储到内存中(作为arraybuffer ...所以数据基本上仍然是块),我希望用户能够下载它.
问题: Blob对象的最大大小约为600 Mb(取决于浏览器),因此我无法从块中重新创建文件.有没有办法流式传输这些块,以便浏览器直接下载它们?
我有一个需要将大文件上传到Azure BLOB存储的Web应用程序.我的解决方案使用HTML5 File API切片成块,然后将块作为blob块放置,块的ID存储在数组中,然后块作为blob提交.
该解决方案在IE中运行良好.在64位Chrome上,我已经成功上传了4Gb文件但是看到了非常大的内存使用量(2Gb +).在32位Chrome上,特定的镀铬工艺将达到约500-550Mb然后崩溃.
我看不到任何明显的内存泄漏或我可以改变以帮助垃圾收集的事情.我将块ID存储在一个数组中,所以显然会有一些内存蠕变,但这不应该很大.这几乎就像File API将整个文件保存在内存中一样.
它是作为一个从控制器调用的Angular服务编写的,我认为只是服务代码是相关的:
(function() {
'use strict';
angular
.module('app.core')
.factory('blobUploadService',
[
'$http', 'stringUtilities',
blobUploadService
]);
function blobUploadService($http, stringUtilities) {
var defaultBlockSize = 1024 * 1024; // Default to 1024KB
var stopWatch = {};
var state = {};
var initializeState = function(config) {
var blockSize = defaultBlockSize;
if (config.blockSize) blockSize = config.blockSize;
var maxBlockSize = blockSize;
var numberOfBlocks = 1;
var file = config.file;
var fileSize = file.size;
if (fileSize < blockSize) {
maxBlockSize = …Run Code Online (Sandbox Code Playgroud) 我正在使用 PDFKit(无节点)在浏览器中生成 PDF,并通过 src 属性将其显示为 iframe 或嵌入标签。生成的 blob URL 是某种 UUID。所以整个页面看起来像:
<embed src="blob:http://localhost/eeaabb..."/>
Run Code Online (Sandbox Code Playgroud)
PDF 看起来不错,但是当我在 Chrome 中单击下载链接时,默认文件名是 UUID。在 FireFox 中,它只是“document.pdf”。
如果这是服务器生成的 PDF,我将使用 Content-Disposition 和/或操作 URL,因此它的最后一部分是我想要的名称,但这对于客户端生成的对象似乎是不可能的。
我尝试过的事情:
有没有办法解决这个问题,以便我可以控制默认/建议的文件名?
让我们从一个例子开始:
对我来说,这似乎没有多大意义。Blob URL 应该代表永远不会改变的不可变数据块。但 MSE 似乎能够使它们代表一个可变的内存缓冲区。
这在幕后是如何工作的?如果我们还想让 blob URL 代表一些可变的内存缓冲区,我们如何使用 javascript 自己做到这一点?
javascript ×5
blob ×2
fileapi ×2
html ×2
html5 ×2
azure ×1
browser ×1
data-uri ×1
media-source ×1
node-pdfkit ×1
pdf ×1
typed-arrays ×1
video ×1
webrtc ×1