我有一个内部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?
答案 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。