我工作在一个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,然后您可以将其附加到占位符文件记录,等等等等等等。所有你以后需要的是一个看门人的脚本来杀死任何被遗弃的骨骼,所以你不会用分数填充数据库。 –