【问题标题】:getting error when uploading image (php/codeigniter)上传图片时出错(php/codeigniter)
【发布时间】:2012-09-10 15:08:33
【问题描述】:

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

但是从将网络主机平台 windows 更改为 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']);
}

【问题讨论】:

  • 您是否检查过文件夹权限(“其他”用户是否具有写入权限)?例如 parent_folder 权限 = 777
  • 你能检查我的附件 url (mediafire)。
  • 帮助我们帮助您是个好主意。只是将包含大量代码的(嵌套!)ZIP 文件扔到 StackOverflow 中根本没有帮助。至少尽量隔离相关代码,贴在这里。
  • 我无法在评论框中提供源代码 :( bcz of limits.
  • @Rohan - 尝试编辑您的问题。按 Ctrl+K 插入代码块...

标签: php codeigniter frameworks upload


【解决方案1】:

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

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

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

应该变成:

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

【讨论】:

    猜你喜欢
    • 2018-12-17
    • 1970-01-01
    • 2015-08-14
    • 2018-02-17
    • 1970-01-01
    • 2019-02-02
    • 1970-01-01
    相关资源
    最近更新 更多