【问题标题】:How to upload file in any directory with PHP如何使用 PHP 在任何目录中上传文件
【发布时间】:2019-05-31 04:14:54
【问题描述】:

我已经创建了图像上传代码,它们只允许我将图像上传到与 PHP 文件位于同一目录中的唯一目录中。

$profile = 'profiles/'.$_FILES['profile']['name'];

如果我这样改:

$profile = 'php_codes/profiles/'.$_FILES['profile']['name'];

它显示错误。我正在使用copy() 函数上传它。 请帮助我了解如何将其上传到任何目录甚至任何其他分区。感谢您的帮助。

【问题讨论】:

  • 您应该与我们分享该错误。
  • 阅读错误信息是第一步。还要检查您正在使用的代码的确切运行时值。
  • 结构是什么样的?
  • 可能是文件夹权限设置所致。

标签: php file-upload


【解决方案1】:

您将需要提供错误,但您遇到的错误很可能是您尝试将文件复制到的目录不存在。也可能是权限问题,但您的困惑似乎在于构建路径。

您的代码的问题在于您的路径是 相对 到 PHP 文件的位置,而不是从根目录的直接路径。您应该阅读一些有关如何导航文件结构的内容,但以下是在 *nix 文件系统(例如 Linux)中工作时要记住的三个关键事项:

  1. 如果您的文件路径不以斜杠开头,则该路径将相对于 PHP 脚本所在的目录。
  2. 如果您的文件路径以斜杠开头,则该路径将相对于根目录。
  3. 您以一个或多个../ 开始路径,以遍历父目录。

例如,假设您有这三个目录,您的 PHP 脚本位于 /php_codes

  • /php_codes
  • /php_codes/code_sn-ps
  • /个人资料

如果您想将文件复制到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'];

【讨论】:

  • 我使用了 $profiles = "../profiles/ " 。 $_FILES['profile']['name'];但还没有工作!它说找不到目录,我试图将我的函数从 copy() 更改为 move_uploaded_file() 函数,但仍然无法正常工作!它只是将它保存在与 php 文件位于同一文件夹中的同一文件夹中
  • @JeanMarie 如错误消息所示,您的 PHP 脚本的 父目录(因为您使用了 ../)中没有名为 profiles 的目录。您是否已经创建了该目录,或者确定它确实存在?
【解决方案2】:

你可以使用

$profiles=__DIR__ . "/profiles/" . $_FILES['profile']['name'];

这将作为 DIR 将是您的脚本目录,然后它将是绝对路径

【讨论】:

    【解决方案3】:

    我终于明白了!只需使用 ../profiles 然后目录就可以了。您只需写点 (2),然后您想返回。如果两次,../../profiles.感谢您的帮助。

    【讨论】:

      猜你喜欢
      • 2019-12-30
      • 2011-06-07
      • 2018-03-17
      • 2015-11-03
      • 1970-01-01
      • 1970-01-01
      • 2014-11-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多