Codeigniter - 如何使文件上载字段不是强制性的?

时间:2010-08-22 21:38:36

标签: php database file codeigniter file-upload

我有一个包含5个文件输入字段的表单,如果文件字段不为空,则所有表格都适用于我的CRUD方法,但是客户端现在想要将某些字段设置为非强制字段。

我正在尝试在我的代码中执行此操作,我遇到的问题是如果文件字段为空则声明一个空变量(在相应的数据库字段中插入空值)。当没有上传任何内容时,我从codeigniter获得一个未定义的变量消息......

这是代码检查文件是否已上传的代码。

if(isset($_FILES['ticketing_summary_file']))
    {
    $this->upload->initialize($config);
        if($this->upload->do_upload('ticketing_summary_file'))
        {
        $upload_data=$this->upload->data();                                
        $ticketing_summary_file_name=$upload_data['file_name'];
        $ticketing_summary_full_file_path = $path_to_uploads.'/'.$ticketing_summary_file_name;
        $show['ticketing_summary_file_url'] = $ticketing_summary_full_file_path;            
         }
    } 

    if(!isset($_FILES['ticketing_summary_file']))
    {       
    $show['ticketing_summary_file_url'] = $empty_file_message;                                  
    }                       

然后这就是我将数据插入我的数据库的方式......我已经尝试在下面和上面的代码中声明'ticketing_summary_file'的内容,但是它说它是空的

$show = array('tour_id' =>$tour,
                        'date' => $this->input->post('date'),
                        'location' => $location);
        $id = $this->show_model->save($show);

为任何帮助干杯,

1 个答案:

答案 0 :(得分:1)

我遇到了类似的问题。我最终检查上传错误是否与lang文件中的文本匹配。可能有更好的方法,但它对我来说是一个快速解决方案。我希望它有所帮助。

    <?php 

    //play code file field
    $play_code_errors= '';

    $data['play_code_file_name'] = uniqid('pc_', true) . 'csv'; 

    $config['upload_path'] = './media/tmp/';
    $config['allowed_types'] = 'csv';
    $config['max_size'] = '4024';
    $config['file_name'] = $data['play_code_file_name'];

    $this->upload->initialize($config);

    if ( ! $this->upload->do_upload('play_code_file'))
    {
        $play_code_errors = $this->upload->display_errors();

        if($play_code_errors = $this->lang->line('upload_no_file_selected'))
        {
            $play_code_errors = '';
        }
    }