HTML5のFile&FileSystem

HTML5のFile

File简介

HTML5对文件进行操作,使用File API

API介绍

  • File:文件对象
    [属性]
    name:文件名称
    type:文件类型
    lastModifiedDate:最后修改时间
    size:文件大小
  • Blob:二进制文件对象
    是File对象的基类,包括size和type属性
  • FileReader:读取文件对象
    [方法]
    readAsBinaryString,readAsText,readAsDataURL,readArrayBuffer,abort
    [事件]
    onabort,onerror,onloadstart,onprogress,onload,onloadend

实例展示

根据上传文件获取文件信息,JS代码如下:

function upload() {
    var files = document.querySelector("#file").files;

    for (var i = 0; i < files.length; i++) {
        var file = files[i];

        var info = file.name + ", " + file.size + ", " + file.type + ", " + file.lastModifiedDate;
        console.log(info);

        // method: readAsBinaryString, readAsText, readAsDataURL, readArrayBuffer, abort
        // event: onabort, onerror, onloadstart, onprogress, onload, onloadend
        var reader = new FileReader();
        reader.readAsDataURL(file);
        reader.onload = function(event) {
            detail.innerHTML = '<img src="' + this.result + '">';
        }
    }
}

文件上传界面html代码如下:

<body>
    <div id="status">
        <span id="detail"></span>
    </div>
    <div id="operate">
        <input type="file" id="file" multiple>
        <button type="button" id="upload" onclick="upload()">upload files</button>
    </div>
</body>

HTML5のFileSystem

FileSystem简介

FileSystem可以申请临时空间或永久配额,对文件进行离线操作

操作步骤

  1. 检查浏览器是否支持FileSystem
  2. 申请配额
  3. 成功与否Handler处理
  4. 得到FileSystem对象fs
<script type="text/javascript">
    window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem;
    var fs = null;
    var detail = document.querySelector("#detail");

    window.onload = function() {

        if (typeof window.requestFileSystem != "undefined") {
            apply(1024);
        } else {
            console.log("Sorry, your browser does not support FileSystem.");
        }
    }

    function apply(requestedBytes) {

        // request quota
        navigator.webkitPersistentStorage.requestQuota(requestedBytes, function (grantedBytes) {
            console.log('we were granted ', grantedBytes, 'bytes');
            window.webkitRequestFileSystem(window.PERSISTENT, grantedBytes, onInitFs, errorHandler);
        }, function(e) {
            console.log('Error', e);
        });

        // query temporary
        navigator.webkitTemporaryStorage.queryUsageAndQuota (function(usedBytes, grantedBytes) {
            console.log('Temporary: we are using ', usedBytes, ' of ', grantedBytes, 'bytes');
        }, function(e) {
            console.log('Error', e);
        });

        // query quota
        navigator.webkitPersistentStorage.queryUsageAndQuota (function(usedBytes, grantedBytes) {
            console.log('Persistent: we are using ', usedBytes, ' of ', grantedBytes, 'bytes');
        }, function(e) {
            console.log('Error', e);
        });
    }

    function onInitFs(filesystem) {
        fs = filesystem;
        console.log("Start use FileSystem.");
    }

    function errorHandler(error) {
        var msg = '';
        switch (error.code) {
            case FileError.QUOTA_EXCEEDED_ERR:
                msg = 'QUOTA_EXCEEDED_ERR';
                break;
            case FileError.NOT_FOUND_ERR:
                msg = 'NOT_FOUND_ERR';
                break;
            case FileError.SECURITY_ERR:
                msg = 'SECURITY_ERR';
                break;
            case FileError.INVALID_MODIFICATION_ERR:
                msg = 'INVALID_MODIFICATION_ERR';
                break;
            case FileError.INVALID_STATE_ERR:
                msg = 'INVALID_STATE_ERR';
                break;
            default:
                msg = 'Unknown Error';
                break;
        };
        console.log('Sorry, operate file system error, detail information: ' + msg);
    }
</script>

实例展示

创建文件,JS实例代码如下:

<script type="text/javascript">
    function createFile() {
        var fileName = "2016_2_14.log";
        fs.root.getFile(fileName, {
            create: true
        }, function(fileEntry) {
            console.log(fileEntry.fullPath + ", " + fileEntry.name);
        });
    }
</script>

页面展示html代码:

<body>
    <div id="status">
        <span id="detail"></span>
    </div>
    <div id="operate">
        <button type="button" id="create" onclick="createFile()">create file</button>
    </div>
</body>

联系我

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值