如何上传类型文件使用数据表codeigniter数据库

Posted

技术标签:

【中文标题】如何上传类型文件使用数据表codeigniter数据库【英文标题】:How to upload type file Using datatables codeigniter database 【发布时间】:2018-06-06 06:04:34 【问题描述】:

我想把文件名放到db,然后把文件放到我的存储服务器上?

我的看法

   <form method="post" id="add_form" class="form-horizontal form-label-left" action="<?php echo site_url('bunyi_pasal/save') ?>" enctype="multipart/form-data">
    <div class="form-group"> 
        <label for="file" class="col-sm-1 control-label"> File </label>
        <div class="col-sm-1">
            <input type="file" id="file_pasal" name="file_pasal" class="file file-loading"> 
        </div>
    </div>     
    <div class="col-xs-12 col-md-12 col-lg-12 " align="navbar-right">
        <button type="submit" name="submit" class="btn btn-success btn-lg" style="width:50%">Save</button>
    </div>  
</form>

我的数据表

<script type="text/javascript">
    $(document).ready(function () 
        var save_method;
        var del = $(this).data('delete');
        $(".select2").select2(width: 'resolve', dropdownAutoWidth: true);
        $('#date').daterangepicker(
            singleDatePicker: true,
            showDropdowns: true,
            format: 'YYYY-MM-DD',
            calender_style: "picker_2"
        , function (start, end, label) 
            //console.log(start.toISOString(), end.toISOString(), label);
        );
        $('#add_form').bootstrapValidator(
            feedbackIcons: 
                valid: 'glyphicon glyphicon-ok',
                invalid: 'glyphicon glyphicon-remove',
                validating: 'glyphicon glyphicon-refresh'
            ,
            fields: 
                id_pasal: 
                    validators: 
                        notEmpty: 
                            message: ' Data Pasal Not Empty'
                        ,
                    
                ,
                point: 
                    validators: 
                        notEmpty: 
                            message: ' Point Not Empty'
                        ,
                    
                ,
                isi_bunyi_pasal: 
                    validators: 
                        notEmpty: 
                            message: ' Bunyi Pasal Not Empty'
                        ,
                    
                ,
            ,
            submitHandler: function (validator, form, submitButton) 
                $.post(form.attr('action'), form.serialize(), function (result) 
                    //  console.log(result);
                    //window.location.href = result.redirect;
                    if (result.retCode == 0) 
                        new PNotify(
                            title: 'Success',
                            text: result.info,
                            type: 'success',
                            styling: 'bootstrap3'
                        );
                        setTimeout(function () 
                            location.reload(true);
                        , 1000);
                     else 
                        new PNotify(
                            title: 'Response',
                            text: result.info,
                            type: 'error',
                            styling: 'bootstrap3'
                        );
                    
                , 'json');
            
        );
    );
</script> 

我的控制器

public function __construct() 
    parent::__construct();
    $this->load->model('General');
    $this->load->helper(array('form', 'url'));


public function save() 
    $this->output->enable_profiler(TRUE);
    $response = array();
    if ($this->input->is_ajax_request()) 
        $id_bunyi_pasal = $this->input->post('id_bunyi_pasal');
        if (empty($id_bunyi_pasal)) 
            if (!empty($_FILES['file_pasal']['name'])) 
                //$config['upload_path'] = 'asset/data_pasal/';
                $config['upload_path'] = UPLOAD_DIR . '/asset/data_pasal';
                $config['allowed_types'] = 'doc|docx|pdf|jpg|jpeg';
                $config['file_name'] = $_FILES['file_pasal']['name'];
                //Load upload library and initialize configuration
                $this->load->library('upload', $config);
                $this->upload->initialize($config);
                if ($this->upload->do_upload('file_pasal')) 

                    $uploadData = $this->upload->data();
                    $file_pasal = $uploadData['file_name'];
                 else 
                    $file_pasal = '';
                
             else 

                $file_pasal = '';
            
            $data_post = array(
                'id_bunyi_pasal'  => '',
                'id_pasal'        => $this->input->post('id_pasal'),
                'point'           => $this->input->post('point'),
                'isi_bunyi_pasal' => trim($this->input->post('isi_bunyi_pasal')),
                'file'            => $file_pasal,
                'keterangan'      => $this->input->post('keterangan'),
            );
            $return_id = $this->general->save($data_post, "tb_bunyi_pasal");
            $response['info'] = " Create Data Success ";
            $response['retCode'] = 0; //Success
            print_r($data_post);
            exit(0);
        
        echo json_encode($response);
     else 
        exit('Access Denied');
    

inspect 的参数输出:

id_pasal:32 点:a isi_bunyi_pasal:测试上传 keterangan:测试上传 提交:

当我点击按钮保存时,没有文件与方法发布一起发送。

【问题讨论】:

见:***.com/questions/2320069/jquery-ajax-file-upload 您可能想要做的是使用预先存在的库,如 dropzone 或 bluemp,并在提交时附加您希望添加到插件的其他表单数据。 你能告诉我关于我的案例吗,因为这个案例有其他人的属性。该链接是关于案例的一个组成部分......请帮助我? 【参考方案1】:

AJAX 默认不处理文件上传(至少没有帮助)。

你应该使用Dropzone。

配置它使其自动处理队列autoProcessQueue: false

在文档中查找 sending 事件。您可以像这样附加表单值:

myDropzone.on("sending", function(file, xhr, formData) 
  formData.append("name", "somevalue");
  formData.append("name2", "somevalue2");
);

或见:Adding more data to Dropzone.js post

一般来说:

    如果通过,请进行验证... 初始化 dropzone 插件并触发上传 在发送事件中附加表单值 打印成功或错误消息(可以在后端使用 400 标头触发 dropzone 错误)

祝你好运!

【讨论】:

以上是关于如何上传类型文件使用数据表codeigniter数据库的主要内容,如果未能解决你的问题,请参考以下文章

codeigniter 文件上传 - 可选?

如何使 CodeIgniter 文件上传类接受所有扩展?

CodeIgniter 中视频文件上传的奇怪问题

检查 codeigniter 文件上传中允许的类型

如何将文件codeigniter上传到数据库

在 Codeigniter 中上传 CSV 文件时出错