如何使用javascript,jquery-ajax在更改<put type='file'>时获得所选文件的完整路径?

2022-08-30 00:01:31

如何在选择文件时使用获取文件的完整路径<input type=‘file’>

<input type="file" id="fileUpload">
<script type="text/javascript">
function getFilePath(){
     $('input[type=file]').change(function () {
         var filePath=$('#fileUpload').val(); 
     });
}
</script>

但 filePath var 包含选定的文件,而不是 .
我在网上搜索了它,但似乎出于安全原因,浏览器(FF,chrome)只是给出了文件的名称。
有没有其他方法可以获得所选文件的完整路径?only namefull path


答案 1

出于安全原因,浏览器不允许这样做,即浏览器中的JavaScript无法访问文件系统,但是使用HTML5 File API,只有Firefox提供属性,但是如果您尝试获取该值,它将返回一个空字符串:mozFullPath

$('input[type=file]').change(function () {
    console.log(this.files[0].mozFullPath);
});

https://jsfiddle.net/SCK5A/

所以不要浪费你的时间。

编辑:如果您需要文件的路径来读取文件,则可以改用FileReader API。以下是有关 SO 的相关问题:在上传图像之前预览图像。


答案 2

试试这个:

它会给你一个临时路径,而不是准确的路径,如果你想显示这个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>");
});

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