PHP move_uploaded_file建议

时间:2012-09-02 13:46:42

标签: php file-upload

我遇到了PHP move_uploaded_file命令的实际问题,无法在共享的Apasche Web托管服务器上正常工作。

如果我想创建一个文件夹(mkdir),我必须使用完整的路径名,例如

$target_path = "/home/myhostingname/public_html/uploads/files/".$lastID;
mkdir($target_path, 0755);

这样做,创建了唯一文件夹,使用FileZilla我可以将文件上传到它。

然而,当我尝试使用move_uploaded_file命令的完整路径时,没有任何内容被上传。 E.g。

move_uploaded_file($tmp_file, $target_path);

其中,例如:

$tmp_file = "/home/myhostingname/public_html/tmp/php8MR5Qv/test.gif"
$target_path = "/home/myhostingname/public_html/uploads/files/130/"

任何想法我做错了什么。该脚本已被接受,但似乎存在不匹配...

2 个答案:

答案 0 :(得分:2)

来自$tmp_file的文件应通过HTTP POST请求上传,否则move_uploaded_file将无效。

要检查文件是否已上传,请使用is_uploaded_file

所以你的代码可能如下所示:

$tmp_file = "/home/myhostingname/public_html/tmp/php8MR5Qv/test.gif"
$target_path = "/home/myhostingname/public_html/uploads/files/".$lastID;
if(is_uploaded_file($tmp_file)){
    mkdir($target_path, 0755);
    move_uploaded_file($tmp_file, $target_path);
}

答案 1 :(得分:0)

解决方案似乎是$ target_path实际上是一个文件。文档并没有特别清楚。然而,当你开始找到有效的代码时,desitination就是一个路径和文件名......当我做出这个改变时,它会立即起作用。