将数据URL(类型为blob:// xxx)转换为IRandomAccessStream

时间:2013-05-19 18:42:58

标签: windows-runtime blob winjs

我有一个内部API(我无法控制),它返回一个图像的URL。我检查了URL,发现它的格式如下:

blob://xxxxxxxx

我在代码中使用此网址作为img.src的值,并且可以完美地显示图像。现在,我想将此URL转换为IRandomAccessStream对象,以便我可以调用另一个内部API。

我尝试了以下内容:

var uri = new Windows.Foundation.Uri(imgUrl);
var streamRef = RandomAccessStreamReference.createFromUri(uri);
streamRef.openReadAsync(function (stream) {
    // stream is of type IRandomAccessStream
    // make internal API call here
}, error);

但是,我在openReadAsync调用的错误处理函数中收到“未实现”错误消息。

有没有其他方法可以将blob URL转换为IRandomAccessStream?

1 个答案:

答案 0 :(得分:1)

以下代码将允许从格式的URL访问blob对象(blob:B0939E98-128B-4BA3-B8D6-B499E7F6C612)。这是根据w3 File API spec第12.7节。

// url like example: blob:B0939E98-128B-4BA3-B8D6-B499E7F6C612
WinJS.xhr({ url: url, responseType: 'blob'}).then(function (req)
{
    var blob = req.response;
}).then(null, function onerror()
{
    // handle error
});

之后使用FileReader api,您可以阅读blob的内容。 mozilla doc link for FileReader api。如果有特定原因需要构建IRandomAccessStream,则需要探测器将blob对象转换为IRandomAccessStream。