我需要知道如何使用PHP的move_uploaded_file函数的目标路径。 (见http://php.net/manual/en/function.move-uploaded-file.php)
现在,我的代码运行正常。我的域的根目录包含以下项目(其中包括):
上传< -t这是一个文件夹
add-photo-submit.php< -t这是一个使用move_uploaded_file的PHP文件
在add-photo-submit.php中,我有以下代码行:
$target_path = "uploads/" . basename($_FILES['uploadedFile']['name']);
$ target_path用作函数的目标参数。 当我通过www.mydomain.com/add-photo-submit.php访问该文件时,这可以正常工作
但是,我最近更改了.htaccess文件以删除.php并添加一个尾部斜杠。 现在可以访问www.mydomain.com/add-photo-submit/访问PHP文件 我认为PHP文件将目标路径解释为“www.mydomain.com/add-photo-submit/uploads/filename.jpg”
我尝试使用绝对路径,但它说我没有得到许可......
将来我希望我的根目录设置如下:
根
-admin(文件夹)
-add-照片submit.php
-uploads
move_uploaded_file有哪些参考框架?
答案 0 :(得分:27)
您应该使用document_root来获取这样的绝对路径:
$target_path = $_SERVER['DOCUMENT_ROOT'] . "/uploads/" . basename($_FILES['uploadedFile']['name']);
答案 1 :(得分:3)
PHP的本地文件名操作不知道mod_rewrite对你的url做了什么,只处理实际的原始文件系统路径。你可以让mod_rewrite将你的简单example.com/index.php
变成一个可怕的example.com/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/yz
,PHP仍然会在服务器上的同一个物理目录中运行。
如果PHP脚本位于/home/sites/example.com/html/index.php
,并且您使用uploads/example.jpg
作为移动路径,则PHP将尝试将该图像放入/home/sites/example.com/html/uploads/example.jpg
,无论请求的URL是什么
答案 2 :(得分:1)
或使用
$target_path = "../uploads/" . basename($fileUpload['name']);
答案 3 :(得分:1)
我们可以使用dirname(__FILE__)
代替服务器root
在任何 root 文件(index.php)
$_SESSION["uploads_base_url"]=dirname(__FILE__);
现在您可以在任何需要上传的文件中使用它。
echo $uploads_base_url=$_SESSION["uploads_base_url"];
答案 4 :(得分:0)
$file_name ="eg-db.sql";
echo "<br>";
echo $target_file = __DIR__.'/'.$file_name;
echo "<br>";
echo $target_location = __DIR__."/targetfolder/". pathinfo($target_file, PATHINFO_BASENAME);
echo "<br>";
if (file_exists($target_file)){
echo "<br> file exist <br>";
if (rename($target_file,$target_location))
{
echo "<br>done";
}else{
echo "<br>nothing";
}
}