Я использую dropzone.js и Codeigniter для обработки поста статьи с процессом загрузки файла:
Прежде чем пользователь отправит статью, он может загрузить файлы. И здесь мне нужна таблица файлов в базе данных для хранения идентификатора статьи и имени файла.
Мой вопрос:
Только после того, как я нажму кнопку отправки формы, статья будет сохранена в базе данных, и после этого я получу идентификатор статьи. Но как только я перетаскиваю файл в 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 для формы и dropzone:
<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>
Попробуй использовать insert_id()
чтобы получить последний вставленный идентификатор.
Разве id не является автоинкрементом? Если это так, вам не нужно передавать его, вы можете передать ноль или пропустить поле. У вас есть имя файла в переменной $ fileName из того, что я вижу выше.