上一篇文章上提到,IE8下服务端获取客户端文件的路径时,会变成C:/fakePath问题,于是乎通过文件路径去获得文件大小就失败了。

上网搜了一下,主要原因是IE8因为安全考虑,在上传文件时屏蔽了真实路径,用C:/fakePath代替。

一、可以通过设置浏览器安全选项得到真实路径:

  Internet选项 -> 安全 -> 自定义级别 -> 将本地文件上载至服务器时包含本地目录路径 -> 选“启动” -> 确定

但是,作为开发者,我们不能指望客户去这么做,所以我们必须通过代码解决这个问题。(参考文章:http://yunzhu.iteye.com/blog/1116893

二、通过selection.createRange().text方式获取路径

代码如下:

//获取文件路径,解决在IE8下由于安全问题,服务端获取客户端文件的路径为C:/fakePath问题
function getPath(obj){ //参数obj为input file对象
if(obj){
if (window.navigator.userAgent.indexOf("MSIE")>=1){
obj.select();
return document.selection.createRange().text;
}else if(window.navigator.userAgent.indexOf("Firefox")>=1){
if(obj.files){
return obj.files.item(0).getAsDataURL();
}
return obj.value;
}
return obj.value;
}
}

以上代码在IE6\7\8下可以正常访问,但在IE9下,document.selection.createRange()拒绝访问,可能是IE的安全性有所提高导致。

经过谷歌搜索之后,网上提供的解决方案是:在IE9下,如果file控件获得焦点,则document.selection.createRange()拒绝访问,因此,只需要在obj.select()后面加一句obj.blur()即可。

IE8下服务端获取客户端文件的路径为C:/fakePath问题的解决方案的更多相关文章

  1. 服务端获取客户端html页面内容-2013-6-28-2

    客户端怎么提交  整个html页面?    分析:      1>我们知道b/s模式,也知道http协议.服务端想要获取客户端的数据,客户端就 必须提交给它,服务器才能获取到.     2> ...

  2. Socket服务端和客户端文件传输

    很多朋友在使用socket编程时不可避免的都做过文件传输,而视频电影等需要一个字节一个字节的传输:但是客户端一般都通过-1进行终止,服务也一样:但是存在的问题是客户端永远不会把-1传递给服务端:因此经 ...

  3. C# 服务端获取客户端 系统/浏览器/IP

    /// <summary> /// 获取客户端操作系统版本 /// </summary> /// <returns></returns> public ...

  4. C# Socket服务端与客户端通信(包含大文件的断点传输)

    步骤: 一.服务端的建立 1.服务端的项目建立以及页面布局 2.各功能按键的事件代码 1)传输类型说明以及全局变量 2)Socket通信服务端具体步骤:   (1)建立一个Socket   (2)接收 ...

  5. linux(centos 6.4)下安装php memcache服务端及其客户端(详细教程)

    前言 在搭建个人博客时,由于没有使用任何框架,纯手工code前台和后台,导致遇到许多问题,其中一个问题就是mysql连接导致的页面相应速度异常低.在查询各种途径后,只能考虑使用memcache缓存.在 ...

  6. Android从服务端获取json解析显示在客户端上面

    Android从服务端获取json解析显示在客户端上面 百度经验:jingyan.baidu.com 首先说一下Json数据的最基本的特点,Json数据是一系列的键值对的集合,和XML数据来比,Jso ...

  7. centos7下使用n grok编译服务端和客户端穿透内网

    (发现博客园会屏蔽一些标题中的关键词,比如ngrok.内网穿透,原因不知,所以改了标题才能正常访问,) 有时候想在自己电脑.路由器或者树莓派上搭建一些web.vpn等服务让自己用,但是自己的电脑一般没 ...

  8. 编写Java程序,实现客户端向服务端上传文件的功能

    查看本章节 查看作业目录 需求说明: 实现客户端向服务端上传文件的功能 当启动服务端后,运行客户端程序,系统提示客户在客户端输入上传文件的完整路径.当客户在客户端输入完成后,服务端实现文件上传 实现思 ...

  9. 【.NET+MQTT】.NET6 环境下实现MQTT通信,以及服务端、客户端的双边消息订阅与发布的代码演示

    前言: MQTT广泛应用于工业物联网.智能家居.各类智能制造或各类自动化场景等.MQTT是一个基于客户端-服务器的消息发布/订阅传输协议,在很多受限的环境下,比如说机器与机器通信.机器与物联网通信等. ...

随机推荐

  1. js 常用方法

    1: 五秒后跳出提示框 setTimeout("alert('已经过了五秒了')",5000) 2:  十秒后自动关闭窗口 <script language="ja ...

  2. Mysql-cluster7.5

    Data nodes: shell> rpm -Uhv mysql-cluster-community-data-node-7.5.5-1.1.el7.x86_64.rpm SQL nodes: ...

  3. mysqlbinlog 导出日志

    1.找到日志所在的位置 ls 正好我需要的日志在000011这个二进制文件里,所以直接执行下面的语句: mysqlbinlog --no-defaults --start-datetime=" ...

  4. 富文本编辑器防止xss注入javascript版

    富文本编辑器:ueditor 其实富文本编辑器已经有防止xss注入功能,但是你服务端程序在接收的时候在做一次转义,否则有可能然后前端验证直接提交数据导致被xss攻击. 为了节省后端程序开销则在前端 显 ...

  5. oracle如何写包

    一:如何使用FOR循环二:如何使用拼接语句 EXECUTE IMMEDIATE v_sql INTO v_WORK_ORDERID;三:如何定义记录类型做为变量,用于存储及查询 CREATE OR R ...

  6. [2014.01.27]WFsoft.wfLibrary.wfVerifyImage 1.8

    全新开发的验证码图片控件--WFsoft.wfLibrary.wfVerifyImage,使用简单,功能强大.     完全支持.net 2.0编写,对下一代操作系统平稳过渡.     同时支持.ne ...

  7. JSON转Dictionary

    方法很简单,留作以后使用. System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Scrip ...

  8. Linux下Tomcat服务器重启与关闭

    Linux下Tomcat重新启动 详细请参照原网站链接http://www.cnblogs.com/tovep/articles/2473147.html 在Linux系统下,重启Tomcat使用命令 ...

  9. Jenkins若干小问题

    1. Jenkins上不能直接在shell中调用scp命令来执行上传下载操作,核心问题是scp需要输入密码. 为了可以直接将密码传递过去.我们安装  sshpass 来透传密码 a. 安装sshpas ...

  10. SharePrecences--(json+sharePrecences)存list 或对象

    利用Gson和SharePreference存储结构化数据 具体的步骤 这个假设有三个User对象生成一个ArrayList<User>: User user1 = new User(&q ...