您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

h5+js实现本地文件读取和写入

2026/1/7 1:04:46发布20次查看
这次给大家带来h5+js实现本地文件读取和写入,h5+js实现本地文件读取和写入的注意事项有哪些,下面就是实战案例,一起来看一下。
代码如下:读取本地文件<!doctype html><html lang="en"><head>     <meta charset="utf-8">     <title>document</title></head><body>     <p>         <input type="file" id="files" style="display: none" onchange="fileimport();">         <input type="button" id="fileimport" value="导入">     </p>     <script src="../js/jquery/jquery-1.11.1.js"></script>     <script>         //点击导入按钮,使files触发点击事件,然后完成读取文件的操作         $(#fileimport).click(function () {             $(#files).click();         })        function fileimport() {            //获取读取我文件的file对象             var selectedfile = document.getelementbyid('files').files[0];            var name = selectedfile.name;//读取选中文件的文件名             var size = selectedfile.size;//读取选中文件的大小             console.log(文件名:+name+大小:+size);            var reader = new filereader();//这是核心,读取操作就是由它完成.             //reader.readastext(selectedfile);//读取文件的内容,也可以读取文件的url             reader.onload = function () {                //当读取完成后回调这个函数,然后此时文件的内容存储到了result中,直接操作即可                 console.log(this.result);             }         }    </script></body></html>
写入文件html5中与filereader相对应的也有一个filewriter,filereader可以被chrome、ff和safari都支持。要求一定版本以上的。 但是filewriter似乎只有被chrome支持.
代码如下://首先导入一个js文件<script type="text/javascript" src="./js/filesaver.js" charset="utf-8"></script>//html中添加一个导出元素<input type="button" id="export" value="导出"/>//js文件$(#export).click(function(){     var content = 这是直接使用html5进行导出的;     var blob = new blob([content], {type: text/plain;charset=utf-8});     saveas(blob, file.txt);//saveas(blob,filename) });
读取本地文件路径代码在获取文件路径的遇到些问题,由于安全原因,新版的浏览器都不支持直接获取本地url,在网上找了些方法,如下:
<!doctype html><html lang="en"><head>     <meta charset="utf-8">     <title>document</title></head><body><script type="text/javascript">     //fx获取文件路径方法     function readfilefirefox(filebrowser) {        try {             netscape.security.privilegemanager.enableprivilege(universalxpconnect);         }        catch (e) {             alert('无法访问本地文件,由于浏览器安全设置。为了克服这一点,请按照下列步骤操作:(1)在地址栏输入about:config;(2) 右键点击并选择 new->boolean; (3) 输入signed.applets.codebase_principal_support (不含引号)作为一个新的首选项的名称;(4) 点击ok并试着重新加载文件');            return;         }        var filename=filebrowser.value; //这一步就能得到客户端完整路径。下面的是否判断的太复杂,还有下面得到ie的也很复杂。         var file = components.classes[@mozilla.org/file/local;1]             .createinstance(components.interfaces.nsilocalfile);        try {            // back slashes for windows             file.initwithpath( filename.replace(/\//g, \\\\) );         }        catch(e) {            if (e.result!=components.results.ns_error_file_unrecognized_path) throw e;             alert(file ' + filename + ' cannot be loaded: relative paths are not allowed. please provide an absolute path to this file.);            return;         }        if ( file.exists() == false ) {             alert(file ' + filename + ' not found.);            return;         }        return file.path;     }    //根据不同浏览器获取路径     function getvl(obj){//判断浏览器         var sys = {};        var ua = navigator.useragent.tolowercase();        var s;         (s = ua.match(/msie ([\d.]+)/)) ? sys.ie = s[1] :             (s = ua.match(/firefox\/([\d.]+)/)) ? sys.firefox = s[1] :                 (s = ua.match(/chrome\/([\d.]+)/)) ? sys.chrome = s[1] :                     (s = ua.match(/opera.([\d.]+)/)) ? sys.opera = s[1] :                         (s = ua.match(/version\/([\d.]+).*safari/)) ? sys.safari = s[1] : 0;        var file_url=;        if(sys.ie<="6.0"){ //ie5.5,ie6.0 file_url = obj.value; }else if(sys.ie>=7.0){            //ie7,ie8             obj.select();             file_url = document.selection.createrange().text;         }else if(sys.firefox){            //fx             //file_url = document.getelementbyid(file).files[0].getasdataurl();//获取的路径为ff识别的加密字符串             file_url = readfilefirefox(obj);         }else if(sys.chrome){             file_url = obj.value;         }        //alert(file_url);         document.getelementbyid(text).innerhtml=获取文件域完整路径为:+file_url;     }</script><h1>js获取文件域完整路径的方法,兼容不同浏览器</h1><p id="text" style="color:#f00;"></p><input type="file" id="file" onchange="getvl(this)" /></body></html>
以上代码在ie 6 7 8均正常使用,在ie9下,document.selection.createrange()拒绝访问,看来安全性有所提高。
最后测试发现,在ie9下,如果file控件获得焦点,则document.selection.createrange()拒绝访问,
因此,只需要在obj.select()后面加一句obj.blur()即可。
else if(sys.ie>=7.0){  //ie7,ie8   obj.select();   obj.blur();   file_url = document.selection.createrange().text;  }    // obj = document.getelementbyid(file);
以上就是h5+js实现本地文件读取和写入的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product