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

问题描述 投票:0回答:2

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

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

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

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

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

php path directory relative
2个回答
0
投票

存储在计算机上的文件的相对路径不适用于PHP,因为它是服务器端。因此,一旦您提交表单,您的文件就会包含在请求中,并且源路径将不再可用。

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


0
投票

相关目录不像你认为的那样工作在PHP(根据你的JavaScript思维方式) - 主要是因为PHP是服务器端,理论上可以访问操作系统内的任何文件(除非被监禁等) - 最接近你会找到类似$_SERVER['DOCUMENT_ROOT']的东西,它会给你网络根目录的相对路径 - 但是如果你运行基于PHP客户端 - 没有“相对根” - 在cli,你只需使用./(或没什么),..//告诉php“与脚本相同的目录”IE

./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']就足够了,但你应该构建你的程序来制作类,控制器,编码时可以轻松访问模块等。 (因此编写处理目录位置的方法)


根据您的评论更新

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

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

是的,如果您已经加载了该页面,并且已经在前一页/会话中存储了包含此信息的cookie

否,如果用户从未访问过该页面并且第一次页面加载已经发生,并且预计不会发生其他操作,例如AJAX或表单提交。

根据您的要求,您应该能够简单地:

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
 });

这将把var mypath发送到一个名为phpsend_path_to_php.php文件。 php文件将能够提取$_POST['path]然后你做任何你想要的php - 无论你echo / return将在result的回调

© www.soinside.com 2019 - 2024. All rights reserved.