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

gru*_*czy 38 jquery file-type input

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

Pek*_*ica 47

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

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

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

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

在我所知道的所有其他当前主流浏览器中,它也被关闭了.文件名是您可以获得的最佳名称.

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

  • @grus即使你知道完整的路径也不能这样做.出于安全原因,您无法以编程方式填充文件上载.否则,您可以从访问者的计算机上获取"C:\ Documents and Settings\Username\Top Secret Document.doc`,而无需他注意到. (6认同)
  • 我无法使用浏览器获取文件的路径?这太疯狂了!! (5认同)
  • @grusz嗯,这取决于你的观点:这不是网站上传文件真正来自的业务.当你想将原始文件位置存储为用户的服务时,这很痛苦.我知道....像uploadify或swfupload.org*这样基于Flash的上传组件可能会在这里有更多的自由. (5认同)

小智 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>
Run Code Online (Sandbox Code Playgroud)

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>");
});
Run Code Online (Sandbox Code Playgroud)

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