【问题标题】:How can I upload a file and store a file table into DB?如何上传文件并将文件表存储到数据库中?
【发布时间】:2015-06-12 03:49:07
【问题描述】:

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

  1. 有一个表格可以发表文章
  2. 有一个 dropzone 允许用户上传文件

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

【问题讨论】:

  • 您可以使用会话。上传文件时将文件ID设置为会话。当您保存文章时,从会话中获取文件ID并使用文章ID保存。

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


【解决方案1】:

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

【讨论】:

  • 非常感谢 MarlZ15199。我终于解决了这个问题,我先在文件 table = 0 中插入文章 ID,然后在我发布文章并使用 insert_id() 获取新 ID 后更新文章 ID。
【解决方案2】:

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

【讨论】:

  • 嗨,天使,非常感谢您的回复。是的,它是自动增量。我将文章存储在一个表中,file_table 是另一个。但是在我提交文章表单并且在提交表单之前完成上传操作之前,我不会获得最新的文章 ID。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-09
  • 2015-07-21
  • 2021-06-20
  • 2012-04-22
  • 2014-09-11
  • 2020-01-28
  • 2013-08-12
相关资源
最近更新 更多