如何上传文件并将文件 table 存储到数据库中?

How can I upload a file and store a file table into DB?

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

  1. 有表格可以post一篇文章
  2. 有一个拖放区允许用户上传文件

在用户提交文章之前,他们可以上传文件。在这里,我需要在数据库中创建一个文件 table 来存储文章 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")));
    }
}

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>

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

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