Jquery - 从本地驱动器加载图像

时间:2011-06-03 23:26:24

标签: javascript jquery html javascript-events

我有以下HTML标记:

用户选择文件,我想在图像大小内预览此文件为onchange事件:

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

我有非常奇怪的行为:

1)尽管我使用的是Ubuntu计算机+谷歌浏览器,但我得到C:\fakepath\\[file name]警报。

2)我的文件未加载到img标签中。

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

我做错了吗? 这些浏览器是否存在某种安全限制?

2 个答案:

答案 0 :(得分:2)

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

  

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

<强>文件名

  

获取时,必须返回字符串   “C:\ fakepath \”后跟着   列表中第一个文件的文件名   所选文件(如果有)或   如果列表为空,则为空字符串。上   设置,如果新值为空   字符串,它必须清空列表   选定的文件;否则,它必须   抛出INVALID_STATE_ERR异常。

答案 1 :(得分:1)

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

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