如何在更改<;时获取所选文件的完整路径;输入类型=‘;文件’&燃气轮机;使用javascript、jquery和ajax?

如何在更改<;时获取所选文件的完整路径;输入类型=‘;文件’&燃气轮机;使用javascript、jquery和ajax?,javascript,jquery,file-upload,filepath,Javascript,Jquery,File Upload,Filepath,如何使用 函数getFilePath(){ $('input[type=file]')。更改(函数(){ var filePath=$('#fileUpload').val(); }); } 但是filePath变量只包含所选文件的名称,而不是完整路径 我在网上搜索了它,但出于安全原因,浏览器(FF、chrome)似乎只给出了文件名。 是否有其他方法获取所选文件的完整路径?您不能这样做-出于安全考虑,浏览器将不允许这样做 使用输入类型=文件对象选择文件时,值 value属性的值取决于“Inc

如何使用


函数getFilePath(){
$('input[type=file]')。更改(函数(){
var filePath=$('#fileUpload').val();
});
}
但是filePath变量只包含所选文件的名称,而不是完整路径
我在网上搜索了它,但出于安全原因,浏览器(FF、chrome)似乎只给出了文件名。

是否有其他方法获取所选文件的完整路径?

您不能这样做-出于安全考虑,浏览器将不允许这样做

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

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

和其他

你错过了
这在更改事件函数的末尾

也不要为更改事件创建函数,只需按如下方式使用它

<script type="text/javascript">

    $(function()
    {
        $('#fileUpload').on('change',function ()
        {
            var filePath = $(this).val();
            console.log(filePath);
        });
    });

</script>

$(函数()
{
$('#fileUpload')。on('change',function()
{
var filePath=$(this.val();
log(文件路径);
});
});

你不应该这样做。。。我认为在最新的浏览器中尝试是没有用的(据我所知)。。。另一方面,所有最新的浏览器都不允许这样做

您可以通过一些其他链接找到解决方法,如获取服务器端的值,但不在客户端(javascript)中



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

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

所以不要浪费你的时间

编辑:如果需要文件的路径来读取文件,可以使用API。这里有一个关于SO的相关问题:

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

事实上,您可以在特定条件下获得它,但它需要ActiveX控件,并且在99.99%的情况下无法工作

无论如何,您都无法使用它将文件还原到原始位置(因为您完全无法控制下载的存储位置,甚至无法控制下载的存储位置),因此在实践中,它对您也没有多大用处。

尝试以下方法:

它将为您提供一个临时路径,而不是精确的路径,如果您希望像本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+”]”;
});
这不完全是你想要的,但可能在某个地方对你有帮助。

你是说这个吗

$('#i_file').change( function(event) {
var tmppath = URL.createObjectURL(event.target.files[0]);
    $("img").fadeIn("fast").attr('src',tmppath);       
});

您可以使用以下代码获取上载文件的工作本地URL:

<script type="text/javascript">    
    var path = (window.URL || window.webkitURL).createObjectURL(file);
    console.log('path', path);
</script>

var path=(window.URL | | window.webkitURL).createObjectURL(文件);
log('path',path);

如果您可以选择上载整个文件夹,则可以

<input type="file" webkitdirectory directory multiple/>

但它不包含整个绝对路径,只包含相对路径。Firefox中也支持。

file元素具有和数组调用
文件
它包含您需要的所有必要内容

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);
var file=document.getElementById(“上传”);
addEventListener(“change”,function()){
对于(var i=0;i
您只能通过IE11和MS Edge获取要上载的选定文件的完整路径

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

一个有趣的注意事项是:虽然这在web上不可用,但如果您在Electron中使用JS,那么您可以这样做

使用标准HTML5文件输入,您将在所选文件上收到一个额外的
path
属性,其中包含真实的文件路径


此处的完整文档:

可以使用FileReader API更改img元素的src


@nauphal感谢您的评论,但是还有其他方法可以获取所选文件的完整路径吗?如果您希望获取服务器上文件的路径(例如,为要在服务器上运行的命令行实用程序构建web界面),则始终可以构建相对路径,以s的形式发送,并使用树小部件或提前键入,让用户选择它,然后让服务器处理该文件。可能重复了您的代码,但它给了我错误的路径。我的文件在
D
目录中,但值是
C:\fakepath\test.xls
C:\fakepath\fileName.xls。。。有人知道如何解决这个问题吗?这就是这个问题的关键所在,伙计们:它永远不会显示实际路径,并且总是放
C:\fakepath\
,有没有其他文件类型的方法可以做到这一点:pdf、docx等,而不是图像
.target.files[...].webkitRelativePath: "FOLDER/FILE.ext"
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);
var fullPath = Request.Form.Files["myFile"].FileName;