IndexedDB存储大文档

存储


<script>
	function getFile(){
		let xhr = new XMLHttpRequest();
		let blob;
		xhr.open("GET", '/his2/js/ihsp/ihsp.txt', true);
		xhr.responseType = "blob";
		xhr.addEventListener("load", function () {
			if (xhr.status === 200) {
				blob = xhr.response;
				console.log('获取opencv.js成功');
				putInDB(blob,'js');
			}
		}, false);
		xhr.send();
	}
	function putInDB(type,id) {
		debugger
		var transaction = db.transaction(["oc"], 'readwrite');
		var put = transaction.objectStore('oc').put(type,id);
		put.onsuccess = function (event) { console.log('数据'+id+'写入成功'); };
		put.onerror = function (event) { console.log('数据'+id+'写入失败'); }
		// read(id);
	}

	var db
	$(function () {
		var request = window.indexedDB.open("MTDatabase",1);
		request.onerror = function(event) {
			console.log('数据库打开报错');
		};
		request.onblocked = function() { console.log("Your database version can't be upgraded because the app is open somewhere else.");};

		request.onsuccess = function (event) {
			debugger
			console.log('数据库打开成功');
			db = request.result;
			db.onerror = function (event) { console.log("Error creating/accessing IndexedDB database"); };
			//是否有表,表里是否有那条数据
			var r = db.transaction(['oc']).objectStore('oc').get('js');
			r.onsuccess = function(event) {
				var d = event.target.result;
				if(!d){
					console.log('表中无数据,或数据已清空');
					getFile();
				}
			};
			r.οnerrοr= function() {
				console.log('查询失败');
				getFile();
			}
		};

		request.onupgradeneeded = function (event) {
			debugger
			console.log('数据库更新');
			db = event.target.result;
			var objectStore;
			if (!db.objectStoreNames.contains('oc')) {
				console.log("新建表");
				objectStore = db.createObjectStore('oc');
			}else{
				console.log("版本更新,数据删除更新");
				var t = event.target.transaction;
				var requ = t.objectStore('oc').delete("js");
				requ.onsuccess = function (event) { console.log('数据库表数据js删除成功'); };
				requ.onerror = function (event) { console.log('数据库表数据js删除成功'); };
			}
		}
	});

</script>

读取

<div id="content"></div>
<script>
    $(document).ready(function(){
        read()
    });
    function read() {
        var db;
        var request = window.indexedDB.open("MTDatabase",1);
        request.onerror = function(event) {
            console.log('数据库打开报错');
        };
        request.onblocked = function() { console.log("Your database version can't be upgraded because the app is open somewhere else.");};

        request.onsuccess = function (event) {
            console.log('数据库打开成功');
            db = request.result;
            db.onerror = function (event) { console.log("Error creating/accessing IndexedDB database"); };
            //是否有表,表里是否有那条数据
            var r = db.transaction(['oc']).objectStore('oc').get('js');
            r.onsuccess = function(event) {
                var d = event.target.result;
                if(d){
                    let id = 'js'
                    var req = db.transaction(['oc']).objectStore('oc').get(id);
                    req.onerror = function(event) { console.log('读取'+id+'数据失败'); };
                    req.onsuccess = function(event) {
                        var file = event.target.result;
                        var reader = new FileReader();
                        reader.addEventListener("loadend", function() {
                            debugger
                            $("#content").append(reader.result);
                            $.parser.parse($(".easyui-layout"));
                            // eval(reader.result)
                        });
                        reader.readAsText(file);
                    };
                }
            };
        };
    }
</script>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值