41

当我调用val()输入时,type="file"我只得到文件名而不是完整路径。如何获得完整路径?

4

2 回答 2

48

你不能:这是所有现代浏览器中的一项安全功能。

对于IE8,默认情况下它是关闭的,但可以使用安全设置重新激活:

当使用输入 type=file 对象选择文件时,value 属性的值取决于用于显示网页的安全区域的“将文件上传到服务器时包括本地目录路径”安全设置的值包含输入对象。

仅当启用此设置时,才会返回所选文件的完全限定文件名。禁用该设置时,Internet Explorer 8 将本地驱动器和目录路径替换为字符串 C:\fakepath\,以防止不适当的信息泄露。

在我所知道的所有其他当前主流浏览器中,它也被关闭了。文件名是你能得到的最好的。

此问题中的更详细信息和良好链接。它指的是在服务器端获取值,但是在表单提交之前的 JavaScript 中的问题是相同的。

于 2010-08-15T20:43:41.153 回答
16

好吧,获得完整路径是不可能的,但我们可以有一个临时路径。

试试这个:

它会给你一个临时路径而不是准确的路径,如果你想显示选定的图像,你可以使用这个脚本,就像在这个 jsfiddle 示例中一样(通过选择图像以及其他文件来尝试): -

JSFIDDLE

这是代码:-

HTML:-

<input type="file" id="i_file" value=""> 
<input type="button" id="i_submit" value="Submit">
    <br>
<img src="" width="200" style="display:none;" />
        <br>
<div id="disp_tmp_path"></div>

JS:-

$('#i_file').change( function(event) {
var tmppath = URL.createObjectURL(event.target.files[0]);
    $("img").fadeIn("fast").attr('src',URL.createObjectURL(event.target.files[0]));

    $("#disp_tmp_path").html("Temporary Path(Copy it and try pasting it in browser address bar) --> <strong>["+tmppath+"]</strong>");
});

它不完全是您正在寻找的东西,但它可能会在某个地方为您提供帮助。

于 2014-07-18T06:11:09.197 回答