文件已上传但未移动

时间:2016-01-04 12:09:59

标签: php

我已经关注了一个小教程,以便我可以将文件上传到服务器,这个文件应该移动到img / profile /然后从那里读取。

我的树就像这样(img和profile是文件夹):

updatepp.php 图标profile.png img和img里面的个人资料

我进入了我的文件夹并检查了权限,它说我可以写入此文件。

updatepp.php内部是profilepic上传的fcode

if(isset($_FILES['profile']) === true){
    if(empty($_FILES['profile']['name']) === true){
        echo 'please choose a file';
    }else{
        //checks 
        $allowed = array('jpg', 'jpeg', 'png', 'gif');
        $file_name = $_FILES['profile']['name'];
        $file_extn = strtolower(end(explode('.', $file_name)));
        $file_temp = $_FILES['profile']['tmp_name'];

        if(in_array($file_extn, $allowed) === true){
            $file_path = 'img/profile/' . substr(md5(time()),0,10) . '.' . $file_extn;
            if(move_uploaded_file($file_temp, $file_path)){
                echo "succes " . $file_path;
                $result = $db->prepare("UPDATE users SET profile=:profile WHERE user_id=:user");
                $result->bindParam(':profile', $file_path);
                $result->bindParam(':user', $user);
                $result->execute();
            }else{
                echo "failure";
            }
        }else{
            echo 'incorrect file type. Allowed: ';
            echo implode(', ', $allowed);
        }
    }
}

文件上传到数据库,屏幕上显示消息成功$file_path。但是,当我查看文件夹时,我发现该文件尚未移动。

我在安装了LAMP堆栈的虚拟ubuntu客户端上托管这个,我在主机和虚拟机之间使用共享文件夹。

我认为文件夹不存在,但很明显。

1 个答案:

答案 0 :(得分:1)

  

来自文档: $_SERVER['DOCUMENT_ROOT']是项目执行所在的文档根目录。如中所定义   服务器的配置文件。

如果您的上传文件目的地在DOCUMENT_ROOT之内,那么您可以将路径声明为:

$file_path = $_SERVER['DOCUMENT_ROOT'].'img/profile/' . substr(md5(time()),0,10) . '.' . $file_extn;

你也可以尝试这样:

$file_path = '../img/profile/' . substr(md5(time()),0,10) . '.' . $file_extn;