Codeigniter:如果目录不存在则创建目录

5

大家好,能否帮我解决这个问题。我使用了CodeIgniter的文件上传类,链接在这里,它运行良好!但我需要知道如何在默认上传路径$config['upload_path'] = './uploads/'中创建目录,目录名是今天的日期,以下是我的示例代码。

date_default_timezone_set('Asia/Manila');
$date = date('Y-m-d H:i:s');

    $config['upload_path'] = './uploads/'.$date;
    $config['allowed_types'] = 'jpg|jpeg|gif|png';
    $config['max_size'] = '100';
    $config['max_width']  = '1024';
    $config['max_height']  = '768';


if (!is_dir('uploads/'.$date)) {
mkdir('./uploads/' . $date, 0777, TRUE);

}

我遇到了一个错误,类似于:

Message: mkdir(): Invalid argument

我搜索了如何修复它,他们说这个 0777 CI 权限可以解决问题,但是对我来说仍然不起作用。
感谢任何回应。

2
目录名称中不允许使用“:”冒号字符。 - Elavarasan Muthuvalavan - Lee
"尝试给出完整路径,并用双引号括起来。" - Suresh Kamrushi
@elavarasanlee 谢谢你提供的信息,我现在会尝试一下,如果它解决了问题,我会回复你的。 - CaffeineShots
2
请使用date('Y-m-d H.i.s')代替冒号。 - Elavarasan Muthuvalavan - Lee
我已经尝试了上面代码中第二行的 $date = 'abc',以测试日期是否是我的问题,但仍然得到相同的错误。 - CaffeineShots
抱歉,我之前的翻译有误,正确的翻译应该是“等待排除冒号,抱歉。谢谢大家!” - CaffeineShots
3个回答

19

日期格式将包含特殊字符,如-:

我不确定-,但是在地图上不允许使用:。因此,您必须从$date中删除该字符。

$date = str_replace( ':', '', $date);
if (!is_dir('uploads/'.$date)) {
    mkdir('./uploads/' . $date, 0777, TRUE);

}

或者像elavarasan lee说的那样使用:

date('Y-m-d H.i.s')

@kodewrecker,没问题。很高兴我能帮到你。别忘了在设置CodeIgniter配置之前先更改日期。否则仍然会失败;) - Mathlight

5
if(!is_dir($config['upload_path'])) mkdir($config['upload_path'], 0777, TRUE);

3
此答案被列入低质量帖子审核队列,因为它只是一行代码而没有解释。请解释您的代码是如何回答问题的。 - Adi Inbar
1
好的答案不需要解释。这是最好的答案。 - Faizan Anwer Ali Rupani

0
如果您是CodeIgniter的新手,并且之前在PHP中使用了用于创建目录的代码:
$target_dir="../../media/profile/".date('my')."/";
    if(!file_exists($target_dir)){
        mkdir($target_dir,0777);
    }

然后在CodeIgnitor中,您可以使用一个点表示外部目录路径。

$target_dir="././media/profile/".date('my')."/";
    if(!file_exists($target_dir)){
        mkdir($target_dir,0777);
    }

这个解决了我的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接