如何获得文件的完整路径,同时选择文件使用<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)只给出了文件的名称。 是否有其他方法获得所选文件的完整路径?


当前回答

文件元素和数组调用文件,它包含所有必要的东西,你需要

var file = document.getElementById("upload");

file.addEventListener("change", function() {
    for (var i = 0; i < file.files.length; i++) {
        console.log(file.files[i].name);
    }
}, false);

其他回答

这对我来说是个可行的解决方案

const path = (window.URL || window.webkitURL).createObjectURL(file);

它将返回一个blob URL以本地访问该文件。

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

这是正确的形式。

文件元素和数组调用文件,它包含所有必要的东西,你需要

var file = document.getElementById("upload");

file.addEventListener("change", function() {
    for (var i = 0; i < file.files.length; i++) {
        console.log(file.files[i].name);
    }
}, false);

只能通过IE11和MS Edge获取上传文件的完整路径。

var fullPath = Request.Form.Files["myFile"].FileName;

你不能。 安全性阻止您了解客户端计算机的文件系统的任何信息——它甚至可能没有文件系统!它可能是一台MAC电脑、一台个人电脑、一台平板电脑或一台联网冰箱——你不知道,不可能知道,也不会知道。让您拥有完整的路径可以为您提供有关客户端的一些信息——特别是如果它是一个网络驱动器。

事实上,你可以在特定的条件下得到它,但它需要一个ActiveX控件,并且在99.99%的情况下不会工作。

你不能用它来恢复文件到原来的位置(因为你完全无法控制下载文件存储在哪里,甚至它们是否被存储),所以在实践中它对你没有多大用处。