【问题标题】:Codeigniter, GroceryCRUD, GoDaddy - file upload errorCodeigniter、GroceryCRUD、GoDaddy - 文件上传错误
【发布时间】:2013-12-10 19:13:11
【问题描述】:

我在 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;
        }
    }

【问题讨论】:

    标签: php linux codeigniter grocery-crud


    【解决方案1】:

    您是否 100% 确定该目录存在并且您指向的 image_path 存在?

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

    【讨论】:

    • 我仔细检查了服务器,目录结构确实存在,此外,如果我按照您上面的建议使用 BASEPATH,它会两次放置绝对路径并抱怨找不到它。我尝试签入 application/logs/ 但此目录中没有日志。
    【解决方案2】:

    使用 getcwd() 检查您当前的工作目录。您是否在本地计算机上从子目录(例如 mydomain.com/dev)开发站点,而现在在您的实际主机上,您是从根目录(例如 mydomain.com/)运行它?如果是,你的

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

    实际上可能需要在路径中添加一个 /。如果不需要,请向我们展示以下输出:

    回声 getcwd() 。 "
    "; 以及从任何 ftp 客户端到 assets/uploads/files 的完整路径。 在 foto_upload 方法中执行 getcwd() 命令,以确保您看到的是 CI 当前工作的实际路径。

    【讨论】:

      猜你喜欢
      • 2014-11-21
      • 2014-02-06
      • 1970-01-01
      • 1970-01-01
      • 2017-10-22
      • 2016-05-19
      • 1970-01-01
      • 2011-09-22
      • 2012-06-01
      相关资源
      最近更新 更多