首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MSStream -有什么意义?

MSStream -有什么意义?
EN

Stack Overflow用户
提问于 2014-11-10 11:10:03
回答 2查看 3.1K关注 0票数 1

请在这个问题上容忍我。

在设置WinJS.xhr响应的响应时,我可以将其设置为‘ms流’或blob。我希望在下载文件时利用流的概念,这样我就不必将整个响应保存在内存中(视频文件可以是巨大的)。

然而,我对'ms-stream‘对象所能做的就是用一个MSStreamReader读取它。这将是很好的,如果我可以告诉它‘消耗1024字节从流,并’循环‘这个,直到流用尽。但是,从读取文档(还没有尝试过,所以如果我错了就纠正我),我似乎只能从流读取一次(例如readAsBlob方法),并且不能设置开始位置。这意味着我需要将整个响应作为blob读入内存。我可以通过将responseType设置为'blob‘来实现这一点。那么,MSStream到底有什么意义呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-30 03:04:27

不久前,我写了一篇博文,帮助回答关于MSStream和在WinRT中遇到的其他奇怪对象类型以及JavaScript应用程序的主机的问题。见http://www.kraigbrockschmidt.com/2013/03/22/msstream-blob-objects-html5/。是的,您可以使用MSStreamReader来完成某些工作(这是一个同步API),但是您也可以将一个MSStream传递给URL.createObjectURL,以便将它分配给img.src等等。

关于MSStream,以下是我所写的一些内容:“从技术上讲,MSStream是该HTML5文件API的扩展,它提供了与WinRT的互操作。当您从某些MSStream API获得HTML5 (或Blob)对象时(比如下载文件或视频时使用的带有responseType的XmlHttpRequest,或者从画布的msToBlob方法),您可以将这些结果传递给接受IInputStream或IRandomAccessStream作为输入的各种WinRT API。要使用画布示例,可以将来自msToBlob的blob中的msToBlob输入到Windows.Graphics.Imaging中的API中进行转换或转码。使用Windows.Media.Transcoding中的API也可以类似地处理视频流。您还可能只想将流的内容写入StorageFile (不一定在文件系统上),或者将它们复制到缓冲区进行加密。“

所以MSStreamReader并不是最终的目标.MSStream的真正用途是将对象传递到接受上述接口类型的WinRT API中,这将打开许多可能性。

不可否认,这是一个文档不足的领域,这就是为什么我写了我的系列文章,标题为“文件问答”、“流”、“缓冲区”和“Blobs”(最初的帖子在http://www.kraigbrockschmidt.com/2013/03/18/why-doesnt-storagefile-close-method/上)。

票数 0
EN

Stack Overflow用户

发布于 2015-01-29 12:07:05

实际上,msDetachStream方法允许访问底层流,并且不会中断下载过程。我最初认为任何未下载的数据在调用时都会丢失,因为文档中提到MSStream对象是关闭的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26842425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档