上传脚本无法查找目录

时间:2014-04-20 16:12:21

标签: php file-upload xampp

这是我的上传脚本

<?php
include 'core/init.php';
protect_page();
admin_page();

$fields = array('title', 'description');
foreach($_POST as $key=>$value) {
if(empty($value) && in_array($key, $fields) == true){
    $errors[] = 'All fields are required';
    break 1;
}
}

if(!empty($errors)){
    echo output_errors($errors);
}
else{
#remove slashes from content
$title = stripslashes($_POST["title"]);
$description = stripslashes($_POST["description"]);


if(isset($_FILES["FileInput"]) && isset($_FILES["image"]) && $_FILES["FileInput"]["error"]== UPLOAD_ERR_OK)
{
    ############ Edit settings ##############
    $UploadMainDirectory    = '/center/downloads/';
    $UploadImageDirectory   = '/center/images/';
    ##########################################

    //check if this is an ajax request
    if (!isset($_SERVER['HTTP_X_REQUESTED_WITH'])){
        die();
    }

    if ($_FILES["FileInput"]["size"] > 1024*1024*1024) {
        die("Main file size is too big!");
    }

    if ($_FILES["image"]["size"] > 1*1024*1024) {
        die("Image size is too big!");
    }

    switch(strtolower($_FILES['FileInput']['type']))
    {
        //allowed file types
        case 'image/png': 
        case 'image/gif': 
        case 'image/jpeg': 
        case 'image/pjpeg':
        case 'text/plain':
        case 'application/x-zip-compressed':
        case 'application/x-rar-compressed':
        case 'application/octet-stream':
        case 'application/zip':
        case 'application/rar':
        case 'application/x-zip':
        case 'application/x-rar':
            break;
        default:
            die('Unsupported main file!'); //output error
    }

    switch(strtolower($_FILES['image']['type']))
    {
        //allowed file types
        case 'image/png': 
        case 'image/gif': 
        case 'image/jpeg': 
        case 'image/pjpeg':
            break;
        default:
            die('Unsupported image file!'); //output error
    }

    $File_Name          = strtolower($_FILES['FileInput']['name']);
    $File_Ext           = substr($File_Name, strrpos($File_Name, '.')); //get file extention
    $Random_Number      = rand(0, 9999999999); //Random number to be added to name.
    $NewFileName        = $Random_Number.$File_Ext; //new file name

    $ImageName          = strtolower($_FILES['image']['name']);
    $ImageExt           = substr($ImageName, strrpos($ImageName, '.')); //get file extention
    $NewImageName       = $Random_Number.$ImageExt; //new file name

    if(move_uploaded_file($_FILES['FileInput']['tmp_name'], $UploadMainDirectory.$NewFileName ) && move_uploaded_file($_FILES['image']['tmp_name'], $UploadImageDirectory.$NewImageName ))
       {
        $fields = array('type', 'name', 'description', 'file', 'image');

        $upload_data = array(
        'type'           => $_POST['type'],
        'name'           => $_POST['title'],
        'description'    => $_POST['description'],
        'file'           => $NewFileName,
        'image'          => $NewImageName,
        );
        array_walk($upload_data, 'array_sanitize');
        $fields = '`' . implode('`, `', array_keys($upload_data)) . '`';
        $data = '\'' . implode('\', \'', $upload_data) . '\'';

        mysql_query("INSERT INTO `downloads` ($fields) VALUES ($data)");

        die('Success! File Uploaded.');
    }else{
        die('Error uploading Files!');
    }

}
else
{
    die('Something went wrong!');
}
}
?>

我的问题是脚本无效,在localhost上给出了一个错误,指出该目录不存在但存在。 我已经在我的主机上上传了脚本,但即使在那里我也收到错误... 我的目录看起来像这样

enter image description here

我如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

你写了/dir/dir/....,这意味着你要使用(对于windows):C:/dir/dir/...和linux /dir/dir/... {{C - 把当前的驱动器号网站放在那里运行}}。这是calles 绝对路径你想要使用的是相对路径从你不在给定位置的地方开始的路径。

所以你应该

############ Edit settings ##############
$UploadMainDirectory    = 'center/downloads/';
$UploadImageDirectory   = 'center/images/';
##########################################

将被翻译为current_directory/center/downloads/的相对路径并可供应用程序使用。

答案 1 :(得分:0)

以上代码是否存在于文件adm_download_center_process.php中,并且中心目录也存在于同一目录中?如果是,则在“/ center / downloads /”之前删除“/”,即仅使用“center / downloads /” -