1

我有一个返回图像 URL 的内部 API(我无法控制)。我检查了 URL 并注意到它具有以下格式:

blob://xxxxxxxx

我在我的代码中使用这个 URL 作为值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?

4

1 回答 1

1

以下代码将允许从格式的 URL 访问 blob 对象 (blob:B0939E98-128B-4BA3-B8D6-B499E7F6C612)。这是根据w3 文件 API 规范第 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 的内容。FileReader api 的mozilla 文档链接。如果有特定原因构建 IRandomAccessStream,则需要 explorer 将 blob 对象转换为 IRandomAccessStream。

于 2013-05-20T04:52:10.427 回答