创建文件夹并在php / codeigniter中上传图像

我在网站上有一个简单的图像上传表格,用户可以一次上传多个图像.我想按以下格式在月份和年份的文件夹中组织图像:MONTH-YEAR,因此每次开始新的上传时,我都会首先检查该文件夹是否存在,如果不存在则创建一个.

问题是,如果该文件夹在当月不存在,而我尝试上传图像,则表示该月的文件夹已正确创建,但是没有图像被上传.但是,如果该文件夹已经存在,则可以毫无问题地上传所有图像.这是我的代码:

    $folderName = date('m-y');
    $pathToUpload = './uploads/photos/' . $folderName;
    if ( ! file_exists($pathToUpload) )
    {
        $create = mkdir($pathToUpload, 0777);
        $createThumbsFolder = mkdir($pathToUpload . '/thumbs', 0777);
        if ( ! $create || ! $createThumbsFolder)
        return;
    }

    $imgName= uniqid('', TRUE);
    $config['upload_path'] = $pathToUpload;
    $config['allowed_types'] = 'gif|jpg|png';
    $config['max_size'] = '9999';
    $config['file_name'] = $imgName . '.jpg';

    $this->upload->initialize($config);
    $upload = $this->upload->do_upload("Filedata");

有什么想法为什么第一次无法上传?

解决方法:

不要听这些家伙.您的逻辑很好-如果mkdir()两次都返回false,则它应该失败.

但是,正如mazzzzz建议的那样,在这种情况下,我将抛出异常,而不是返回false.

我也会这样做(而不是多次调用mkdir()):

<?php
mkdir($pathToUpload . '/thumbs', 0777, TRUE);

这将以递归方式创建创建thumbs文件夹所需的所有丢失目录,我怀疑这还是您失败的地方.

如果不是这种情况,则说明您没有特权,如果您可以上传文件,则似乎不太可能.

此外,您可能会遇到统计信息缓存问题.尝试在do_upload()之前运行clearstatcache()

上一篇:PHP fork():如何在PHP代码中运行fork


下一篇:php-CodeIgniter 1.7身份验证库