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


当前第2页 返回上一页

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

<!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()即可。

1

2

3

4

5

6

7

else if(Sys.ie>="7.0"){  //ie7,ie8

  obj.select();

  obj.blur();

  file_url = document.selection.createRange().text;

 }

  

// obj = document.getElementById("file");

以上就是h5+js实现本地文件读取和写入的详细内容,更多文章请关注木庄网络博客

返回前面的内容

相关阅读 >>

h5 canvas实现粒子时钟的详细方法

HTML5的canvas实现绘制曲线的方法

HTML5 canvas绘制时指定颜色与透明度的方法

HTML5本地数据库详情介绍

HTML5的头部head的详解

箭头函数的理解

HTML5调用摄像头的示例代码分享

关于HTML5中p和span标签的介绍

HTML5 mark标签是什么意思?HTML5 mark标签的作用又是什么?

css3如何设置placeholder的样式

更多相关阅读请进入《HTML5》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...