如何上传文件并将文件表存储到DB中?

时间:2015-04-07 14:00:08

标签: php mysql codeigniter file-upload dropzone.js

我正在使用dropzone.js和Codeigniter处理文件上传过程的文章帖子:

  1. 有一篇发表文章的表格
  2. 有一个dropzone允许用户上传文件
  3. 在用户提交文章之前,他们可以上传文件。在这里,我需要一个数据库中的文件表来存储文章ID和文件名。

    我的问题是: 只有在我单击提交表单按钮后,文章才会存储到数据库中,之后我将获得文章ID。但是一旦我将文件拖入dropzone,文件就会上传。那么如何存储" article_id - file_name"配对数据库?

    以下是我上传文件的代码:

    PHP上传文件:

    public function upload() {
        if (!empty($_FILES)) {
        $tempFile = $_FILES['file']['tmp_name'];
        $fileName = $_FILES['file']['name'];
        $targetPath = getcwd() . '/uploads/';
        $targetFile = $targetPath . $fileName ;
        move_uploaded_file($tempFile, $targetFile);
    
        // store table in db
        $this->load->database(); // load database
        $this->db->insert('file_table', array('id'=> '', 'article_id' => '', 'file_name' => $fileName, 'created_time'=> date("Y-m-d H:i:s")));
        }
    }
    

    表单和dropzone的PHP:

    <form>
    ...            
    <div id="dropzone" class="dropzone">
       <div class="dz-message">
           Drop files here or click to upload.<br />
           <span class="note">(You might select multiple files here.)</span>
       </div>
    </div>
    ...
    </form>
    

2 个答案:

答案 0 :(得分:0)

不是id自动增量吗?如果是这样,您不需要传递它,您可以传递null或跳过该字段。你可以在我上面看到的$ fileName变量中找到文件名。

答案 1 :(得分:0)

尝试使用insert_id()获取最后插入的ID。