当我使用PHP通过move_uploaded_file()保存上传的文件时,我可以使用绝对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);
答案 0 :(得分:5)
move_uploaded_file()
不接受任一参数的网址。目标是文件系统上的绝对路径。
<?php
$dir = '/var/www/httpsdocs/'; // Adjust to your configuration
move_uploaded_file($_FILES['blue_image']['tmp_name'], $dir.$new_name);
正如@ apphacker建议的那样。您可以使用realpath(__FILE__)
来确定文件的绝对路径。
答案 1 :(得分:2)
如果由于不知道绝对路径是什么而无法使用绝对路径,请使用PHP的realpath()来确定它是什么,然后使用它。
答案 2 :(得分:1)
httpdocs和httpsdocs目录是否都位于同一个父文件夹中?如果是这样,只需使用move_uploaded_file中第二个参数的相对路径将文件放在另一个根目录中。
例如:
$uploaddir = '../httpdocs/';
$uploadfile = $uploaddir . basename($_FILES['myfile']['name']);
此代码假定上传脚本位于httpsdocs根目录中,并且您要将文件保存到httpdocs目录中。
答案 3 :(得分:1)
请注意,由于您将上传的文件放在httpdocs
中,因此可以上传php文件并执行任意代码。