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

使用jQuery输入文件的完整路径,jquery,input,file-type,Jquery,Input,File Type,当我用type=“file”对输入调用val()时,我只得到文件名而不是完整路径。如何获取完整路径?你不能:这是所有现代浏览器的安全功能 对于,默认情况下它处于关闭状态,但可以使用安全设置重新激活: 使用输入类型=文件对象选择文件时,value属性的值取决于用于显示包含输入对象的网页的安全区域的“将文件上载到服务器时包括本地目录路径”安全设置的值 仅当启用此设置时,才会返回所选文件的完全限定文件名。禁用该设置后,Internet Explorer 8会将本地驱动器和目录路径替换为字符串C:\fa

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

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

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

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

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

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


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

嗯,获取完整路径是不可能的,但我们可以有一个临时路径

试试这个:

它将为您提供一个临时路径,而不是精确的路径,如果您希望像本JSFIDLE示例中那样显示选定的图像,可以使用此脚本(通过选择图像以及其他文件来尝试):-

代码如下:-

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#u文件')。更改(函数(事件){
var tmppath=URL.createObjectURL(event.target.files[0]);
$(“img”).fadeIn(“fast”).attr('src',URL.createObjectURL(event.target.files[0]);
$(“disp#tmp_path”).html(“临时路径(复制它并尝试在浏览器地址栏中粘贴它)-->[“+tmppath+”]”;
});

这不完全是您要查找的内容,但它可能在某些方面对您有所帮助。

我无法使用浏览器获取文件的路径?这太疯狂了@这取决于你的观点:上传文件的真正来源与网站无关。我知道,当您想将原始文件位置存储为用户的服务时,这很痛苦。。。。基于Flash的上传组件,如uploadify或swfupload.org,在这里可能有更多的自由。因此,这意味着,我不能将值从一个文件输入复制到另一个文件输入,因为我从来没有完整路径?@grus即使知道完整路径,你也不能这样做。出于安全原因,您不能以编程方式填充文件上载。否则,你可以在访客没有注意到的情况下,从访客的计算机中获取
C:\Documents and Settings\Username\Top Secret Document.doc
。好的,看来我现在必须重新设计了。非常感谢。我已经为这个有用的脚本浪费了大部分时间:)谢谢,Boulis很棒,我真的可以使用这个文件吗?喜欢读和写吗?如何通过代码下载该文件?我们也可以命名该文件,而不使用所有随机字符串?如果您使用HTML/CSS/JS创建桌面应用程序,您可以使用NW.JS,其中chrome/browser构建实现文件选择器,就像普通桌面文件选择器一样,提供完整路径。看见
$('#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>");
});