PHP-获取文件/文件夹相对路径

时间:2019-02-19 23:30:21

标签: php path directory relative

使用JavaScript,如果您具有这样设置的输入标签...

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

通过执行此操作,您可以获取所选文件的相对路径...

document.getElementsByTagName('INPUT')[0].files[0].webkitRelativePath

我的问题是,如何使用PHP从输入标签中获取文件的相对路径?使用PHP,您可以获取文件名,类型,大小,但是如何获取其相对路径?

2 个答案:

答案 0 :(得分:0)

相对目录无法按照您认为应该在PHP中的方式工作(根据您的JavaScript思维方式)  -主要是因为PHP服务器端,并且理论上可以访问操作系统中的任何文件(除非被监禁等)–您将找到的最接近的文件类似于{{1 }},它将为您提供网络根目录的相对路径-但是,如果您基于$_SERVER['DOCUMENT_ROOT']运行客户端-在{{1}中没有“相对根目录” },您只需使用PHP(或不使用任何内容),cli./来告诉php“与脚本相同的目录相关” IE

../

除了使用这些方法之外,您还可以编写自己的方法来使用自己的方法进行处理-等等,尽管还有很多流派。有人说使用 absolute 路径是要走的路。但是其他人认为,对于 relative 是可移植性。确实,这取决于您的程序以及您将其用于什么..是否正在部署等..如果是后者,并且它是基于Web的,/就足够了,但是您应该对程序进行结构化以使其类,控制器,模块等在编码时易于访问。 (因此可以使用写方法来处理目录位置)


根据您的评论更新

您问是否可以将其传递给php,答案是-是的,不是。

是的,如果页面已经加载,并且您希望在操作(表单提交/ AJAX调用)的一部分中发送信息

是的,如果您已经加载了页面,并在上一页/会话中存储了带有此信息的cookie

如果用户从未去过该页面并且第一次页面加载已经发生,并且不会发生其他动作(例如AJAX或表单提交),则不会。

根据您的要求,您应该能够简单地进行以下操作:

./directory/yourfile.txt   //This starts in the SAME directory as the php file

../directory/yourfile.txt  // This goes up one directory, and then you can drill back down.

../../../directory/directory/directory/file.txt  // Just like above, but up 3 directories

/directory.file.txt // Starts from the server root -- IE /var/www/etc/etc/etc

这会将$_SERVER['DOCUMENT_ROOT'] mypath 发送到名为var mypath = document.getElementsByTagName('INPUT')[0].files[0].webkitRelativePath $.post("send_path_to_php.php", {path: mypath}, function(result){ alert(result); // result of php page response }); 的{​​{1}}文件。 var文件将能够提取php,然后您可以在send_path_to_php.php中执行所需操作-php / $_POST['path]中的任何内容都将在回调中的php

答案 1 :(得分:0)

PHP的服务器端无法使用存储在计算机上的文件的相对路径。因此,一旦提交表单,文件便会包含在请求中,并且源路径不再可用。

但是您可能会使用不同的技术(JavaScript向服务器发出异步请求的组合-AJAX或其他字段可能被隐藏,存储文件路径信息)将路径信息传递给服务器。