上传图片时出错(php / codeigniter)

时间:2012-09-18 10:53:19

标签: php codeigniter frameworks upload

我的问题是在linux中创建一个目录。我的网站有一个后端,我可以上传网站的图像,并根据上传图像的年份和月份自动创建文件夹。

但是从将网络主机平台窗口更改为linux后出现错误,我可以成功上传图片,但上传时无法看到图片。

如果我从后端(管理面板)上传名为pdf.png的图片,则表示没有显示任何内容,我看到图片已在我的网站上传文件夹中以2012\09\pdf.png的形式上传。但我想在我的/2012/09/文件夹中找到这个上传的文件。该文件夹是根据年月自动创建的。

请为我的php程序找到Screen Shot of error and source code (ZIP),如果您发现错误请帮我解决,谢谢!

    function upload()
    {
    $a = $this->_make_dir();       
    if(move_uploaded_file($a["tmpname"], $a["target"]))
    {
        echo 'success';
        $this->art_media->create(array("media_filename"=>$a["file"],
            "media_date"=>time(),
            "media_title"=>$a["file"],
            "media_description"=>"",
            "media_filelink"=>date("Y")."/".date("m")."/",
            "media_isimage"=>false,
            "media_type"=>$a["filetype"]
            ));

    } 
    else
    {
        echo 'failed';
    }
}
function _make_dir()
{
    $target1 = FCPATH.$this->config->item("articles_media").date("Y");
    $target = $target1."\\".date("m");

    $uploadfile = $_FILES["Filedata"]["name"];
    $type = $_FILES["Filedata"]["type"];
    if(!is_dir($target1))
    {
        mkdir($target1);
        mkdir($target);
    }
    else
    {
        if(!is_dir($target))
        {
            mkdir($target);
        }
    }        
    if(is_file($target."\\".$uploadfile)==true)
    {
        echo 'duplicate';
        exit();
         //$uploadfile = $uploadfile."_".$n;
    }
    return array("filetype"=>$type,"file"=>$uploadfile,"targetpath"=>$target."\\","target"=>$target."\\".$uploadfile,"tmpname"=>$_FILES['Filedata']['tmp_name']);
}

1 个答案:

答案 0 :(得分:0)

Windows和Linux在遍历目录时的工作方式不同:Windows使用反斜杠,而Linux使用正斜杠。

您应该使用正斜杠替换所有转义的反斜杠。例如,这个:

$target = $target1."\\".date("m");

应该成为:

$target = $target1."/".date("m");