3

Web サイトに、ユーザーが一度に複数の画像をアップロードできる簡単な画像アップロード フォームがあります。次の形式で月と年に基づいてフォルダーに画像を整理したいので、新しいアップロードが開始されるたびに、最初にそのフォルダーが存在するかどうかを確認し、存在しない場合は作成します。

問題は、当月のフォルダーが存在せず、画像をアップロードしようとすると、当月を表すフォルダーが適切に作成されますが、画像がアップロードされないことです。ただし、フォルダーが既に存在する場合は、すべての画像を問題なくアップロードできます。これが私のコードです:

    $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");

初めてアップロードが機能しない理由はありますか?

4

2 に答える 2

3

これらの人に耳を傾けないでください。ロジックは問題mkdir()ありません。どちらの場合も false を返す場合は、失敗するはずです。

ただし、mazzzzz が示唆するように、その場合は false を返すのではなく、例外をスローします。

私もこれを行います(を複数回呼び出すのではなくmkdir()):

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

これにより、thumbs フォルダーを作成するために必要な不足しているすべてのディレクトリが再帰的に作成されますが、とにかく失敗していると思われます。

そうでない場合は、ファイルをアップロードできるかどうかに関係なく、特権を持っていない可能性があります。

さらに、統計キャッシュの問題が発生している可能性があります。clearstatcache()前に走ってみてくださいdo_upload()

于 2012-04-06T02:23:09.020 に答える