gpt4 book ai didi

javascript - 存储来自 php 脚本的信息

转载 作者:搜寻专家 更新时间:2023-10-31 21:24:11 24 4
gpt4 key购买 nike

我正在处理一个 html 页面,该页面包含一个允许用户输入信息和上传文件的表单。所有信息将被插入到Mysql数据库中。

在 Javascript 中,我使用 XMLHttpRequest 将文件发送到服务器,并使用“upload.php”重命名(以避免重复名称)并将它们移动到上传目录中。
为了更好的用户体验,这将在提交整个表单之前完成。

我的问题是:如何存储新文件名(在 upload.php 中定义)以在表单提交“submit.php”中使用它们?
这样做的原因是,在“submit.php”中,我首先将用户信息插入到“user”表中,然后选择将与文件名一起插入到“files”表中的“user_id”(自动递增)。

php session 可以作为一种方法吗?还有别的办法吗?感谢您的帮助

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)

上传.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;

最佳答案

我会考虑使用像 md5 这样的东西用于唯一的文件名。

尽管如此,您可以将文件名放入某个数组,然后返回这些文件名,作为 post 请求的结果,然后将它们放回某个输入字段。

要检索响应,只需将此行添加到您的代码中 open

xhr.onreadystatechange = function {
// If the request completed and status is OK
if (req.readyState == 4 && req.status == 200) {
// keep in mind that fileNames here are JSON string
// as you should call json_encode($arrayOfFilenames)
// in your php script (upload.php)
var fileNames = xhr.responseText;
}
}

如果您想考虑使用简单的 AJAX 请求库,例如 axios .它是基于 promise 的浏览器 HTTP 客户端,使用起来非常简单,可以节省您的时间和精力,因为您不必记住您和我刚刚编写的所有内容。

这是一种方法,但我认为您也可以使用 $_SESSION,而且它非常有效。我猜你此时还没有登录用户,所以我的想法如下:

  • 将文件名放入$_SESSION

  • 使用数据库事务——正如@Marc B 所建议的那样——将文件连接到
    用户

  • 如果没有错误,只需从 $_SESSION 中删除文件名,如果有错误,只需将用户重定向回表单(可能包含一些错误信息),这样他就不会不必重新上传文件,因为您的文件名仍在 $_SESSION

关于javascript - 存储来自 php 脚本的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39858136/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com