加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

javascript 用JS获取file的真实路径-----fakepath的问题

(2013-04-01 23:42:45)
标签:

fakepath解决方法

file标签值的读取

it

分类: 技术类
    相信大家都遇到过用JAVASCRIPT获取一个上传图片的file的值的问题。
    百度一下差不多是说浏览器基于保护用户的相关安全措施,隐藏了上传的真实路径,用faktpath代替,当然,调整浏览器的相关安全设置可以解决这个问题。
    但我们不可能让所有用户都通过设置浏览器的安全设置来进行图片上传,这种方法在网络交互上显然不现实。
    百度一下,大家都几乎可以搜到下图的代码:
http://s10/mw690/6a17255bgd94e8bbd98e9&690用JS获取file的真实路径-----fakepath的问题" TITLE="javascript 用JS获取file的真实路径-----fakepath的问题" />
当大家把这个复制到页面上,通过使用getFullPath(files)的时候,IE可以用了,其它浏览器呢。好像没法使用,就连此方法判断过的火狐firefox也不能正常工作,说getAsDataURL方法不在在,哈哈。傻了,这是神马情况。我搜了一会儿,发现这个方法现在火狐已经不用啦。用 window.URL.createObjectURL(obj.files[0]) 这个方法来替换 obj.files.item(0).getAsDataURL(); 于是就有了下面的:
http://s16/mw690/6a17255bg7c21763a23bf&690用JS获取file的真实路径-----fakepath的问题" />
这样火狐可以用了。可是哦,现在的浏览器尼玛真是多的一B呀。这个兼容性的问题不是只有CSS工程师才会遇到 的,js工程师也是个苦逼的孩纸呀。谷歌浏览器表示完全不明白上面的代码在说神马。于是继续找兼容吧。就找到了下面的这个玩意 :
var getPath=function(obj,fileQuery,transImg){
        if(window.navigator.userAgent.indexOf("MSIE")>=1){
            obj.select();
            var path=document.selection.createRange().text;
            obj.removeAttribute("src");
            obj.setAttribute("src",transImg);
            obj.style.filter=  
            "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+path+"', sizingMethod='scale');"
        }
        else{
            var file =fileQuery.files[0]; 
            var reader = new FileReader(); 
            reader.onload = function(e){
                obj.setAttribute("src",e.target.result)
            }
            reader.readAsDataURL(file); 
        }
    }
好吧。找到这个了,也不知道能不能用,我还没来的及测试,反正这个也是大众认可的全兼容---全奸~~尼玛,好吧。就写到这~~~

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有