我已经创建了图片上传代码,它们只允许我将图片上传到与PHP文件位于同一目录的目录中。
$profile = 'profiles/'.$_FILES['profile']['name'];
如果我这样更改它:
$profile = 'php_codes/profiles/'.$_FILES['profile']['name'];
它告诉我错误。我正在使用copy()
函数上传它。
请帮助我了解如何将其上传到任何目录甚至其他任何分区。感谢您的帮助。
答案 0 :(得分:0)
您将需要提供该错误,但是您收到的错误很可能是您尝试将文件复制到的目录不存在。也可能是权限问题,但您的困惑似乎在于构建路径。
您的代码存在的问题是您的路径是相对到PHP文件位置的路径,而不是从根目录直接访问的路径。您应该阅读一些有关如何导航文件结构的知识,但这是在* nix文件系统(例如Linux)中工作时要记住的三个关键事项:
../
开始路径,以遍历到父目录。例如,假设您拥有这三个目录,并且PHP脚本位于/php_codes
中:
如果您要将文件复制到php_codes
,则您的路径将相对于PHP脚本:
$profiles = $_FILES['profile']['name'];
如果您要将文件复制到php_codes/code_snippets
,则可以再次相对于PHP脚本进行操作:
$profiles = "code_snippets/" . $_FILES['profile']['name'];
但是,这是一个展示来自根目录的绝对路径的机会。您可以使用它(请注意路径开头的斜杠):
$profiles = "/php_scripts/code_snippets/" . $_FILES['profile']['name'];
如果要将文件复制到/profiles
目录之外的/php_codes
,有两种方法。
第一种方法是从根目录使用绝对路径(路径以斜杠开头),就像上面的示例一样:
$profiles = "/profiles/ " . $_FILES['profile']['name'];
或者,您可以通过使用../
使它相对于父目录上一级:
$profiles = "../profiles/ " . $_FILES['profile']['name'];
有关使用../
进入一个目录的快速说明:您可以根据需要重复多次,以继续上升一级。例如,如果您的PHP脚本位于/php_codes/code_snippets
内,但您想将文件复制到/profiles
,则必须上两个级别:
$profiles = "../../profiles/ " . $_FILES['profile']['name'];
答案 1 :(得分:0)
您可以使用
$profiles=__DIR__ . "/profiles/" . $_FILES['profile']['name'];
用作 DIR 的将是您的脚本目录,然后将是绝对路径
答案 2 :(得分:0)
我终于明白了!只需使用../profiles,然后使用目录即可。您只需输入点(2),然后再返回一次即可。如果两次,.. / .. / profiles。感谢您的帮助。