【问题标题】:Codeigniter load custom upload configCodeigniter 加载自定义上传配置
【发布时间】:2013-04-22 14:36:43
【问题描述】:

我有一个小问题。我有一个用于上传的自定义配置文件。我想加载设置而不重新定义它们。

好的,我的配置如下:

config.php

$config['upload_path'] = 'tmp/';
$config['allowed_types'] = 'zip';
$config['file_name'] = '';
$config['max_size'] = '';
$config['encrypt_name'] = false;
$config['remove_spaces'] = true;

控制器

// Here is my problem $config[]
// How to load settings from config.php without again defining $config array

$config['upload_path'] =   $this->config->item('upload_path');
$config['allowed_types'] = $this->config->item('allowed_types');
$config['file_name'] =     $this->config->item('file_name');
$config['max_size'] =      $this->config->item('max_size');
$config['encrypt_name'] =  $this->config->item('encrypt_name');
$config['remove_spaces'] = $this->config->item('remove_spaces');  

$this->load->library('upload',$config);

if(!$this->upload->do_upload())
{
    $this->session->set_flashdata('error', $this->upload->display_errors());
    redirect('extension/');
}

我想绕过 $config['test] = $this->config->item('test'); 的重新定义

这不可能吗?

【问题讨论】:

    标签: php codeigniter codeigniter-2


    【解决方案1】:

    我不确定我是否遗漏了一些东西,但只是不要将这些线放在你的控制器中。这实际上不会重新声明它?

    【讨论】:

    • 以及如何从 $this->load->library('upload', WHAT NOW HERE ) 中的配置加载声明;
    • 您只需调用配置文件upload.php 并将其放在您的配置文件夹中。上传类将自动加载此自定义文件中声明的配置项。不需要初始化它。见这里:ellislab.com/codeigniter/user-guide/libraries/…,搜索“在配置文件中设置首选项”
    • 是的,但在设置首选项中,他在一个文件中定义了 $config 数组。但是我的配置数据存储在其他文件 /config/upload.php 我尝试你说的但不工作
    • 如果他在 config.php 主文件中定义了上传设置,则不会有任何效果,除非他使用$this->config->item('whatever_item')。如果你删除那些对$this->config->item('whatever_item'); 的调用,它将使用你放在应用程序/配置目录中的文件upload.php。如果这不起作用,请确保您使用正确的上传文件格式。以<?php标签打开,然后声明变量,确保没有语法错误。
    【解决方案2】:

    http://ellislab.com/codeigniter/user-guide/libraries/config.html 描述了如何加载自定义配置项。我建议按照 CI 网站的建议创建一个自定义配置文件,然后将该自定义配置文件加载到您想要的位置。

    所以你会有类似$this->config->load('custom_upload_settings', FALSE, TRUE); 的东西,并且在那个文件中你会有你想要覆盖的设置。

    // 加载名为 custom_upload_settings.php 的配置文件并将其分配给名为“blog_settings”的索引 $this->config->load('custom_upload_settings', TRUE);

    // 检索包含在 custom_upload_settings 数组中的名为 site_name 的配置项 $site_name = $this->config->item('site_name', 'custom_upload_settings');

    【讨论】:

    • 伙计,在我的构造函数中我没有把所有代码 bcs 都放得太大。 // 加载配置 $this->load->config('extension', FALSE, TRUE);
    • 我不明白你的意思? $this->config->load('custom_upload_settings', FALSE, TRUE); 将加载您需要创建的新文件(因此在添加 set_item() 行之前它应该是空的)。
    • 是的,你不知道我的意思。我的问题不在于配置和加载配置...我的问题是上传库如何从我的自定义配置中捕获设置而无需再次定义。
    • 您是否阅读了我发布的指南,它描述了该功能。我添加到我的答案中。
    【解决方案3】:

    是的,Codeigniter 支持自定义上传配置。 您可以设置 config/upload.php 初始设置。

    另一个控制器;

    $config['upload_path'] = FCPATH . 'assets/uploads/articles'; // change custom config
    $this->upload->initialize($config, FALSE);
    

    最重要的初始化第二个参数是FALSE。该参数与 RESET 相关。 在保持默认上传设置的同时,您可以更改其他设置。

    更多信息; Codeigniter File Upload Initialize

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-02
      • 2014-05-10
      • 2011-03-29
      • 2010-10-05
      • 1970-01-01
      • 2014-01-15
      • 2016-10-25
      相关资源
      最近更新 更多