在进入数据库之前,将输入文件中的文件存储到temp var中

时间:2016-01-12 07:29:22

标签: php codeigniter

我想在继续将数据上传到数据库之前先预览文件,是否可以从输入文件中预览所选文件?或者我正在考虑先将它存储到temp var中,然后再将其上传到数据库中。

有人可以帮助我吗?我要上传的文件是txt和xls文件 这里有当前的代码:

查看

<form  id="upload" name="upload" action="<?php echo base_url(); ?>index.php/welcome/upgen048" method="POST" class="form-horizontal" enctype="multipart/form-data" onsubmit="return verify_upload()" >

                    <div class="col-lg-4"></div>    
                    <input type="file" name="uploadData" id="uploadData" style=""/>

                    <br />

                    <div class="text-center">
                    <button type="file" id="submit" value="Submit" class="btn btn-success"><medium><i class="fa fa-upload fa-3x" ></i></br> UPLOAD </medium></button>

                        <!-- Button trigger modal -->
                            <button type="button" class="btn btn-success" data-toggle="modal" data-target="#myModal" <medium><i class="fa fa-upload fa-3x" ></i></br> PREVIEW </medium>
                            </button>

                            <!-- Modal -->
                            <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
                              <div class="modal-dialog" role="document">
                                <div class="modal-content"><!-- modal container -->
                                  <div class="modal-header"><!-- header -->
                                    <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                                    <h4 class="modal-title" id="myModalLabel">Preview</h4>
                                  </div>
                                  <div class="modal-body"><!-- body -->


                                    PREVIEW IN TABLE HERE


                                  </div>
                                  <div class="modal-footer"> <!-- footer -->
                                    <button type="button" class="btn btn-primary" data-dismiss="modal">Close</button>
                                <!--    <button type="button" class="btn btn-primary">Save changes</button> -->
                                  </div>
                                </div>
                              </div>
                            </div>

                    <!-- MODALS -->

                    </div>
                </form>

控制器

function upgen048()
{

    $this->file_path = realpath(navi_ups.'/gen048');

    $config['upload_path'] = $this->file_path;
    $config['max_size'] = 0;
    $config['allowed_types'] = 'txt';
    //$config['overwrite'] = TRUE;

    $this->load->library('upload');
    $this->upload->initialize($config);
    $this->upload->set_allowed_types('*');

    if ( !$this->upload->do_upload('uploadData'))
        {   
                $data['error'] = $this->upload->display_errors();
                $data['main_content'] = 'gen048';
                $this->load->view('includes/template',$data);
        }
    else { //else, set the success message
                $data = array('msg' => "Upload success!");
                $data['main_content'] = 'gen048';
                $this->load->view('includes/template',$data);
                $data['upload_data'] = $this->upload->data();

    }

模型

function srch_gen048()

{
    $sql =" select * from gen_048";
    $query = $this->db->query($sql);
    return($query->num_rows() > 0) ? $query->result(): NULL;
}

2 个答案:

答案 0 :(得分:1)

一个过程是为待处理文件添加一个表。上传会将详细信息插入待处理表中。编辑/更新挂起表中的文件内容。当您完成提交按钮后,会将待处理表格中的行插入gen_048&amp;删除挂起表中的行。

我建议添加一个mysql事件来清除待处理表中超过时间限制的任何条目,因为某人没有发布待处理文件并且也不会丢弃它。

答案 1 :(得分:0)

在使用支持的浏览器上的FileReader对象将事件发送到服务器之前,可以使用Javascript预览所选的表单文件:Preview an image before it is uploaded

上面的答案是针对图像文件,但您可以使用类似window.open()的方法在新标签/窗口上预览文件,而不是将其分配给图像标记。