使用jQuery从文件输入的完整路径

时间:2010-08-15 20:38:30

标签: jquery input file-type

当我使用val()在输入上调用type="file"时,我只获取文件名而不是完整路径。我怎样才能获得完整的路径?

2 个答案:

答案 0 :(得分:47)

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

对于IE8,它默认为关闭,但可以使用安全设置重新激活:

  

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

     

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

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

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

答案 1 :(得分:15)

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

试试这个:

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

<强> 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>");
});

它不完全是你想要的,但它可以帮助你在某个地方。