我工作在一個HTML頁面,其中包含一個允許用戶輸入他們的信息和上傳文件的表格。所有信息將被插入到Mysql數據庫中。從php腳本存儲信息
在Javascript中,我使用XMLHttpRequest將文件發送到服務器,並使用「upload.php」重命名(以避免重複名稱)並將它們移動到上傳目錄中。
爲了獲得更好的用戶體驗,將在提交整個表單之前完成此操作。
我的問題是:我如何存儲新的文件名(在upload.php中定義)在表單提交「submit.php」中使用它們?
這樣做的原因是,在「submit.php」中,我首先插入「用戶」表中的用戶信息,然後選擇「文件」表中將用文件名插入的「user_id」(自動增量)。
php會話可以做到這一點?有另一種方法嗎?感謝您的幫助
HTML:
<form action="submit.php" method="post" id="submitform">
<div>
<--!user info part1-->
</div>
<div id="filesContainer" class="eltContainer">
<input type="file" id="filesList" multiple>
</div>
<div>
<--!user info part2-->
</div>
的javascript:
var fd = new FormData()
var xhr = new XMLHttpRequest()
for (var i=0,nb = fichiers.length; i<nb; i++) {
var fichier = fichiers[i]
fd.append(fichier.name,fichier)
}
xhr.open('POST', 'upload.php', true)
upload.php的:
<?php
foreach($_FILES as $file){
$filename = date('Y') . date('m') . date('d') . date('H') . date('i') . basename($_FILES[$file]['name']);
move_uploaded_file($file['tmp_name'],"../upload_dir/" .$filename);
}
exit;
簡單有文件名還是:啓動一個數據庫事務,插入一個模板記錄(裸必要創造紀錄最低),得到其插入ID,使用該ID來建立你的文件名,然後在完成文件操作後更新記錄/提交事務。 –
在DB中插入文件名時,我不需要文件插入ID,但用戶插入ID(作爲外鍵)。問題是當我做文件操作/插入我還沒有達到用戶插入至極後提交整個表單..我也想盡量減少數據庫交易。無論如何感謝 –
同樣的事情成立。創建一個佔位符用戶記錄,以便您可以獲得一個用戶ID,然後您可以將其附加到佔位符文件記錄,等等等等等等。所有你以後需要的是一個看門人的腳本來殺死任何被遺棄的骨骼,所以你不會用分數填充數據庫。 –