如何使用PHP将上传的文件保存在非公共文件夹中

时间:2017-04-13 22:54:28

标签: php

我的代码可以成功将Word文件上传到我的服务器上。问题是它将它保存在php文件所在位置的子文件夹中,因此如果有人放置目录和文件名,它是公开可用的。我想将文件保存在非公共文件夹中,但我无法弄清楚路径是什么。我在一个带有cpanel的共享服务器上。

$target_dir = "uploads/";
$file_name = basename( $_FILES["fileToUpload"]["name"]);
$target_file = $target_dir . $file_name;
$fileType = pathinfo($target_file, PATHINFO_EXTENSION);
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) 
{
    echo "The file ". $file_name. " has been uploaded. <br>";
} else {
    echo "Sorry, there was an error uploading your file.";
    exit;
}
move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)

这些文件目前正保存到&#34; / home / myusername / public_html / resume / uploads&#34;但是我想把它保存到&#34;&#34; / home / myusername / uploads&#34;。我只知道如何将文件保存到PHP程序所在文件夹中的文件夹中。我知道这可能非常简单,但我已经谷歌搜索了一段时间,但无法找到答案。

2 个答案:

答案 0 :(得分:1)

要记住的是PHP从整个操作系统而不是Web根目录中获取。这意味着要么你需要知道文件夹的绝对地址,要么你仍然坚持上下导航包含文件夹。

鉴于您的问题,位置将是:

move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], "../../uploads/$target_file");

根据您的示例,我假设脚本在resume目录中运行。第一个..向上移动public_html,第二个向myusername移动。从那里它下来uploads

另一种方法是使用绝对地址:

move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], "/home/myusername/uploads/$target_file");

在这两种情况下,您都需要确保PHP具有对相关文件夹的写入权限。

答案 1 :(得分:0)

只需改变一下:

$target_dir = "uploads/";

到此:

$target_dir = "../../uploads/";

您可以保存在您喜欢的任何目录中(前提是它存在并且进程有权写入它)。您所要做的就是指定目录。