php中的move_uploaded_file()返回true但在目录中找不到文件

时间:2016-08-24 12:01:34

标签: php

我需要帮助。

我使用move_uploaded_file()方法将图像上传到我的服务器,该方法返回true,因为在我的服务器上的指定目录中找不到上传的文件。我已经彻底检查过,在服务器上搜索文件以防上传到另一个目录,检查了目录上的权限,但一切看起来都很完美。我真的不知道出了什么问题。 这是代码的片段。

$uploaddir = './upload_dir/';
$allowed = array('gif', 'png', 'jpg','bmp');
$filename = $_FILES['uploadfile']['name'];
$ext = pathinfo($filename, PATHINFO_EXTENSION);
$data = array();
if (!in_array($ext, $allowed)) {
    $data['status'] = 'error';
    $data['error_message'] = 'Invalid file type';
}
else{
    $file_name = time() . '_' . uniqid() . '_' . basename($_FILES['uploadfile']['name']);
    $file_name = preg_replace('/[^a-z0-9_\.\-]+/i', '_', $file_name);
    $file = $uploaddir . $file_name;

    if (isset($_FILES['uploadfile']['tmp_name']) && move_uploaded_file($_FILES['uploadfile']['tmp_name'], $file)) {
        $data['status'] = 'success';
        $data['file_name'] = $file_name;
    } else {
        $data['status'] = 'error';
    }

    echo json_encode($data);
}

提前致谢。

2 个答案:

答案 0 :(得分:1)

出于安全原因检查here

,请使用is_uploaded_file($_FILES['uploadfile']['tmp_name'])代替isset($_FILES['uploadfile']['tmp_name'])

对于上传目录,请使用$uploaddir = $_SERVER['DOCUMENT_ROOT'] . "/upload_dir/";代替$uploaddir = './upload_dir/';来获取绝对路径而不是相对路径。

答案 1 :(得分:0)

谢谢大家。我给了该文件夹错误的权限。这似乎是我自己的问题。