1

CI にコントローラーがあり、データベースにファイルをアップロードできます。ローカルで問題なく動作します。GoDaddy で CI をセットアップし、権限を変更し、データベース構成を変更しました。

ファイルをアップロードしようとすると、ファイルを選択でき、100% アップロードされますが、保存されません。アップロード先のディレクトリ ファイルのアクセス許可は 777 です (現在のテスト用)。webdev コンソールで次のように表示されます。

Error in event handler for (unknown): TypeError: Cannot read property 'state' of null
    at CSRecorder.onQueryStateCompleted (chrome-extension://cplklnmnlbnpmjogncfgfijoopmnlemp/content_scripts/recorder.js:45:13)
    at extensions::messaging:327:9
    at Function.target.(anonymous function) (extensions::SafeBuiltins:19:14)
    at Event.dispatchToListener (extensions::event_bindings:386:22)
    at Event.dispatch_ (extensions::event_bindings:371:27)
    at Event.dispatch (extensions::event_bindings:392:17)
    at dispatchOnMessage (extensions::messaging:294:22) extensions::event_bindings:375
GET http://mywebsite.com/index.php/assets/uploads/files/dark_bg.png 404 (Not Found) jquery-1.10.2.min.js:4
event.returnValue is deprecated. Please use the standard event.preventDefault() instead. 

というポップアップも表示されます"The page at mywebsite.com says: 6"

コントローラーは次のとおりです (ここでも、ローカルの Windows マシンで動作しています)。

public function photo_upload()
    {
        try{

            $gc = new grocery_CRUD;

            $gc->set_table('photography')
                ->set_subject('Image')
                ->required_fields('image_path')
                ->columns('image_path','image_name');

            $gc->set_field_upload('image_path','assets/uploads/files');
            $gc->unset_fields(array('image_date','image_extension'));
            $gc->change_field_type('image_name','invisible');
            $gc->callback_before_insert(array($this,'rename_image'));

            $output = $gc->render();

            $this->_example_output($output); 
        }catch(Exception $e){
                show_error($e->getMessage().' --- '.$e->getTraceAsString());
            }       
    }

function rename_image($post_array) 
    {
        if (!empty($post_array)) {
            //Remove image extension from image name
            $img_name = preg_replace('/\.[^.]+$/', '', $post_array['image_path']);
            //Remove codeigniter id from image name
            $img_name = substr($img_name, 6);
            $post_array['image_name'] = $img_name;
            return $post_array;
        }
    }
4

2 に答える 2

1

getcwd() で現在の作業ディレクトリを確認してください。ローカル マシンで mydomain.com/dev などのサブディレクトリからサイトを開発しましたが、実際のホスティングでは mydomain.com/ などのルート ディレクトリからサイトを実行していますか? もしそうなら、あなたの

$gc->set_field_upload('image_path','assets/uploads/files');

実際にはパスに追加の / が必要になる場合があります。そうでない場合は、次の出力を表示してください。

getcwd() をエコーし​​ます。"
"; 任意の ftp クライアントから assets/uploads/files へのフル パス。foto_upload メソッドで getcwd() コマンドを実行して、現在 CI が動作している実際のパスが表示されていることを確認します。

于 2013-12-23T15:11:09.307 に答える
1

ディレクトリが存在し、指している image_path が存在することを 100% 確信していますか?

$gc->set_field_upload('image_path','assets/uploads/files');

そのための絶対パスを設定できます:

$gc->set_field_upload('image_path',BASEPATH.'assets/uploads/files');

また、CI エラー ログの内容を教えていただけますか? application/logs/log-*.php であなたが得ているエラーについて私が理解していないのは、エラーポップアップがこのコードから来ているようには見えないということです。このメッセージがポップアップすることを期待していました:

show_error($e->getMessage().' --- '.$e->getTraceAsString());

しかし、代わりに次のようになります"The page at mywebsite.com says: 6"

于 2013-12-16T20:08:16.690 に答える