使用JavaScript,如果您具有这样设置的输入标签...
<input type="file" multiple webkitdirectory directory />
通过执行此操作,您可以获取所选文件的相对路径...
document.getElementsByTagName('INPUT')[0].files[0].webkitRelativePath
我的问题是,如何使用PHP从输入标签中获取文件的相对路径?使用PHP,您可以获取文件名,类型,大小,但是如何获取其相对路径?
答案 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或其他字段可能被隐藏,存储文件路径信息)将路径信息传递给服务器。