0

好的,当我通过 move_uploaded_file() 使用 PHP 保存上传的文件时,我不能使用绝对 URL,我必须使用相对 URL。我的网站有 2 个根目录,一个用于 http 端,一个用于 https 端:分别为 httpdocs 和 httpsdocs。因此,如果我的脚本在 https 端,我如何将文件保存到 http 端的位置?

谢谢!

更新 好的所以看起来我使用了错误的绝对路径约定我这样做是这样的:

$dir = 'https://www.mydomain.com/masonic_images/';
move_uploaded_file($_FILES['blue_image']['tmp_name'], $dir.$new_name);
4

4 回答 4

5

move_uploaded_file()不接受任一参数的 URL。目标是文件系统上的绝对路径。

<?php
$dir = '/var/www/httpsdocs/'; // Adjust to your configuration
move_uploaded_file($_FILES['blue_image']['tmp_name'], $dir.$new_name);

正如@apphacker 所建议的那样。您可以使用它realpath(__FILE__)来确定文件的绝对路径。

于 2009-04-14T19:12:14.760 回答
2

如果因为不知道绝对路径是什么而不能使用绝对路径,可以使用 PHP 的 realpath() 找出它是什么然后使用它。

于 2009-04-14T19:09:16.013 回答
1

httpdocs 和 httpsdocs 目录是否都位于同一个父文件夹中?如果是这样,只需为 move_uploaded_file 中的第二个参数使用相对路径即可将文件放在另一个根目录中。

例如:

$uploaddir = '../httpdocs/';
$uploadfile = $uploaddir . basename($_FILES['myfile']['name']);

此代码假定上传脚本位于 httpsdocs 根目录中,并且您希望将文件保存到 httpdocs 目录中。

于 2009-04-14T19:09:32.707 回答
1

请注意,由于您将上传httpdocs的文件放入其中,因此可以上传 php 文件并执行任意代码。

于 2009-04-14T21:02:46.647 回答