如何返回“ftp_put”文件路径中的目录?

时间:2011-07-27 23:15:51

标签: php upload ftp directory

我有一个页面,我的网站用户可以更改他们为自己的帐户输入的信息(例如真实姓名,电子邮件和头像)。我想做的是让他们改变他们的化身。这一切都很好,除了最后一部分:上传文件。首先我找到了该文件,然后调整了大小,现在我试着通过PHP中的"ftp_put"方法将其上传到我的服务器。

我正在使用的脚本(来自我网站的根目录)文件夹"/scripts/newavatar.php"。我要上传的文件夹是"/avatars/"。我的问题是FTP无法识别我已输入"public_html/avatars""../avatars/",或者它不应该输入。我不知道如何更好地解释它。有人可以帮助我吗?

3 个答案:

答案 0 :(得分:0)

您应该使用完整的FTP路径到“avatars”文件夹。 如果它位于FTP根目录中,请尝试:

ftp_put($conn_id, "/avatars/" . $file_name, $local_file_name, FTP_BINARY);

答案 1 :(得分:0)

图像文件已在服务器上,因此您无需使用FTP方法。

这是你如何做的

  1. 通过表单上传文件
  2. 通过imagecreatefrompng()路径
  3. 将文件加载到$_FILES['field_name']['tmp_name']或类似文件中
  4. 进行更改/调整大小
  5. 使用imagepng($imageResource, '/path/to/avatars/image-file-name.png')
  6. 将文件保存到最终目的地

    更新

    我猜你在理解服务器端路径时遇到了一些麻烦。保存最终图像时,最简单的方法是使用相对于scripts/newavatar.php文件的路径。为此,请使用特殊的__FILE__常量,例如

    // save final image
    imagepng($imageResource, dirname(dirname(__FILE__)) . '/avatars/' . $imageFilename);
    

答案 2 :(得分:0)

您应注意 remote_file local_file 之间的区别。 local_file 可以是任何相对路径和目录,但是 remote_file 是远程服务器中的文件名,最好不要使用相对路径,而只使用文件名。 例如:

<file tee >(md5sum > file.md5) | grep "ABC" > file.filt
<file pee 'md5sum > file.md5' 'grep "ABC" > file.filt'

对我有用。