2011-06-03 58 views
1

负荷IMG我有以下HTML标签:jQuery的 - 从本地驱动器

用户选择文件,我想预览图像的大小在这个文件中为onchange事件:

$(document).ready(function(){ 
    $("#bigPicture").change(function() { 
    alert($("#bigPicture").val()); 
    $("#test1").attr("src",$("#bigPicture").val()); 
    }); 
}); 

我有很奇怪的行为:

1)作为警报我得到C:\fakepath\\[file name]虽然我在Ubuntu机器+谷歌浏览器。

2)我的文件没有加载在img标签中呈现。

3)在FireFox上我只有[filename] alert没有路径。并且图像不被渲染。

我做错了什么? 这些浏览器是否有某种安全限制?

+0

我相信这是浏览器所做的一些事情,可以帮助您保护您免受任何可能已经加载页面的恶意脚本的影响。 – 2011-06-03 23:30:17

回答

2

http://dev.w3.org/html5/spec/Overview.html#file-upload-state

由于历史的原因,该值IDL 属性前缀与 字符串 “C:\ fakepath \” 的文件名。一些传统的 用户代理实际上包含了完整的 路径(这是一个安全漏洞) 。

在获取时,必须返回字符串 “C:\ fakepath \”后面的 文件名的第一个文件的列表中选定的文件 ,如果有的话,或者如果列表为空,则为 空字符串。在 设置中,如果新值为空 字符串,则必须清空所选文件的列表 ;否则,必须 引发INVALID_STATE_ERR异常。

1

我认为你可以使用基于文件的URI,比如file:/// c:/test/test.jpeg。

或者,如果该文件是本地文件,则可以将其设置为提供html的相对路径。

相关问题