首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP -获取文件/文件夹相对路径

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

Stack Overflow用户
提问于 2019-02-20 07:30:21
回答 2查看 659关注 0票数 0

使用JavaScript时,如果您将输入标记设置如下...

代码语言:javascript
复制
<input type="file" multiple webkitdirectory directory />

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

代码语言:javascript
复制
document.getElementsByTagName('INPUT')[0].files[0].webkitRelativePath

我的问题是,如何从输入标记中获得文件的相对路径,就像在PHP中一样?用PHP你可以得到一个文件名,类型,大小,但是你如何得到它的相对路径呢?

EN

回答 2

Stack Overflow用户

发布于 2019-02-20 07:52:25

相对目录在PHP中的工作方式与您认为的不同(根据您的JavaScript思维方式) --主要是因为PHP是服务器端,理论上可以访问操作系统内的任何文件(除非被监禁等) --您能找到的最接近的文件是$_SERVER['DOCUMENT_ROOT'],它将为您提供web根目录的相对路径--但是,如果您运行的是基于客户端的D9 --在<代码>D10中没有“相对根”,您只需使用./ (或者什么都不使用)、../、/来告诉php“与相关的与脚本所在的目录相同”IE

代码语言:javascript
复制
./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

除了使用这些方法之外,您还可以编写自己的方法来处理这个问题,等等--在这方面也有许多学派。有人说,使用绝对路径是可行的……但其他人认为,对于可移植性而言,相对才是正确的方式。实际上,这取决于你的程序和你使用它的目的。无论是部署还是部署等等。如果是后者,而且是基于web的,$_SERVER['DOCUMENT_ROOT']就足够了,但是你应该组织你的程序,使类、控制器、模块等在编码时易于访问。(因此编写处理目录位置的方法)

根据您的评论进行更新

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

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

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

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

代码语言:javascript
复制
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
 });

php文件将能够提取$_POST['path],然后您可以在php中做任何您想做的事情--无论您的echo/return在result的回调中是什么

票数 0
EN

Stack Overflow用户

发布于 2019-02-20 08:03:12

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54776532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档