当我使用val()
在输入上调用type="file"
时,我只获取文件名而不是完整路径。我怎样才能获得完整的路径?
答案 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>");
});
它不完全是你想要的,但它可以帮助你在某个地方。