小编Ped*_*ida的帖子

通过AJAX读取后显示视频blob

当我试图在IndexedDB的Chrome的非对应的斑点,我发现我可以作为arraybuffer通过AJAX读取图像,将其存储在索引资料,提取它,将其转换为一个blob,然后使用显示它在一个元素来创建一个解决方法以下代码:

var xhr = new XMLHttpRequest(),newphoto;
xhr.open("GET", "photo1.jpg", true);    
xhr.responseType = "arraybuffer";
xhr.addEventListener("load", function () {
    if (xhr.status === 200) {
        newphoto = xhr.response;
        /* store "newphoto" in IndexedDB */
        ...
    }
}

document.getElementById("show_image").onclick=function() {
    var store = db.transaction("files", "readonly").objectStore("files").get("image1");
    store.onsuccess = function() {
        var URL = window.URL || window.webkitURL;
        var oMyBlob = new Blob([store.result.image], { "type" : "image\/jpg" });
        var docURL = URL.createObjectURL(oMyBlob);
        var elImage = document.getElementById("photo");
        elImage.setAttribute("src", docURL);
        URL.revokeObjectURL(docURL);
    }
}
Run Code Online (Sandbox Code Playgroud)

这段代码工作正常.但是,如果我尝试相同的过程,但这次装载的视频(.MP4)我不能表现出来:

...    
var oMyBlob = new Blob([store.result.image], …
Run Code Online (Sandbox Code Playgroud)

javascript ajax blob indexeddb html5-filesystem

18
推荐指数
1
解决办法
5149
查看次数

检查IndexedDB数据库是否存在

有没有办法检查IndexedDB数据库是否已经存在?当程序尝试打开不存在的数据库时,将创建数据库.我能想到的唯一方法是如下所示,我测试objectStore是否已经存在,如果没有,则删除数据库:

var dbexists=false;
var request = window.indexedDB.open("TestDatabase");
request.onupgradeneeded = function(e) {
    db = e.target.result;
    if (!db.objectStoreNames.contains('todo')) {
       db.close();
       indexedDB.deleteDatabase("TestDatabase");
    } else {
       dbexists=true;
    }
}
Run Code Online (Sandbox Code Playgroud)

indexeddb

16
推荐指数
4
解决办法
2万
查看次数

标签 统计

indexeddb ×2

ajax ×1

blob ×1

html5-filesystem ×1

javascript ×1