Php 使用dropzone在一个请求中上载多个文件时出现问题
我试图在一个请求中使用dropzone插件更新用户图像数据库列,但当我将uploadMultiple设置为true时,该选项不起作用,没有图像移动到文件夹或数据库。但当我将其设置为false时,只有last image name移动到user image列,而所有图像都移动到文件夹 提前谢谢 这是我的密码Php 使用dropzone在一个请求中上载多个文件时出现问题,php,mysql,database,dropzone.js,dropzone,Php,Mysql,Database,Dropzone.js,Dropzone,我试图在一个请求中使用dropzone插件更新用户图像数据库列,但当我将uploadMultiple设置为true时,该选项不起作用,没有图像移动到文件夹或数据库。但当我将其设置为false时,只有last image name移动到user image列,而所有图像都移动到文件夹 提前谢谢 这是我的密码 Dropzone.options.mydropzone = { autoProcessQueue: false, addRemoveLinks: true,
Dropzone.options.mydropzone =
{
autoProcessQueue: false,
addRemoveLinks: true,
dictMaxFilesExceeded: "Maximum upload limit reached",
dictInvalidFileType: "upload only JPG/PNG/JPEG/GIF/BMP",
acceptedFiles: '.png,.jpg,.jpeg,.gif,.bmp',
parallelUploads: 10,
// uploadMultiple: true,
init: function ()
{
var submitButton = document.querySelector('#letupload');
myDropzone = this;
submitButton.addEventListener("click", function(){
myDropzone.processQueue();
});
this.on("complete", function(){
if (this.getQueuedFiles().length == 0 && this.getUploadingFiles().length == 0)
{
var _this = this;
_this.removeAllFiles();
}
//console.log(this.getUploadingFiles());
});
},
};
服务器端
if (!empty($_FILES)) {
$temp_file = $_FILES['file']['tmp_name'];
$targetDir = '../../user_images/';
$filename = rand().$_FILES['file']['name'];
$targetFile = $targetDir.$filename;
if (move_uploaded_file($temp_file, $targetFile)) {
$sql="UPDATE img SET Image='$filename' WHERE User_id = '$memberid' ";//
if(!$qsql=mysqli_query($con,$sql))
{
echo mysqli_error($con);
}
}
}
if (!empty($_FILES)) {
foreach($_FILES['file']['tmp_name'] as $key => $value) {
$temp_file = $_FILES['file']['tmp_name'][$key];
$targetDir = '../../user_images/';
$filename = rand().$_FILES['file']['name'][$key];
$targetFile = $targetDir.$filename;
if (move_uploaded_file($temp_file,$targetFile)) {
$sql="UPDATE img SET Image='$filename' WHERE User_id = '$memberid' ";//
if(!$qsql=mysqli_query($con,$sql))
{
echo mysqli_error($con);
}
}
}
}
follow Mohammed link之后,将每个图像链接到目标文件夹,但最后保存到该数据库的图像是我的新服务器端代码
if (!empty($_FILES)) {
$temp_file = $_FILES['file']['tmp_name'];
$targetDir = '../../user_images/';
$filename = rand().$_FILES['file']['name'];
$targetFile = $targetDir.$filename;
if (move_uploaded_file($temp_file, $targetFile)) {
$sql="UPDATE img SET Image='$filename' WHERE User_id = '$memberid' ";//
if(!$qsql=mysqli_query($con,$sql))
{
echo mysqli_error($con);
}
}
}
if (!empty($_FILES)) {
foreach($_FILES['file']['tmp_name'] as $key => $value) {
$temp_file = $_FILES['file']['tmp_name'][$key];
$targetDir = '../../user_images/';
$filename = rand().$_FILES['file']['name'][$key];
$targetFile = $targetDir.$filename;
if (move_uploaded_file($temp_file,$targetFile)) {
$sql="UPDATE img SET Image='$filename' WHERE User_id = '$memberid' ";//
if(!$qsql=mysqli_query($con,$sql))
{
echo mysqli_error($con);
}
}
}
}
您在每次迭代中都会进行更新,因此脚本末尾的值将是最后上载的图像的名称,因此有一种方法可以通过尝试以下代码片段来解决此问题:
- 将上载的文件名插入数组(i nammed id$images) 档案
- 使用内爆将数组转换为逗号分隔的spring 函数。(我使用了相同的变量$images)
- 使用图像名称更新行
希望这对您有所帮助。感谢@Mohammed在我尝试了您的代码后,将图像名称保存到数据库中的问题仍然存在,我现在发现您在foreach中声明了空数组,下面是工作代码 Dropzone Js
Dropzone.options.mydropzone =
{
autoProcessQueue: false,
addRemoveLinks: true,
dictMaxFilesExceeded: "Maximum upload limit reached",
dictInvalidFileType: "upload only JPG/PNG/JPEG/GIF/BMP",
acceptedFiles: '.png,.jpg,.jpeg,.gif,.bmp',
parallelUploads: 10,
uploadMultiple: true,
init: function ()
{
var submitButton = document.querySelector('#letupload');
myDropzone = this;
submitButton.addEventListener("click", function(){
myDropzone.processQueue();
});
this.on("complete", function(file, response){
if (this.getQueuedFiles().length == 0 && this.getUploadingFiles().length == 0)
{
var _this = this;
_this.removeAllFiles();
}
console.log(this.getUploadingFiles());
});
},
};
服务器端
if (!empty($_FILES)) {
$empty_img_arr=array();
foreach($_FILES['file']['tmp_name'] as $key => $value) {
$temp_file = $_FILES['file']['tmp_name'][$key];
$targetDir = '../../user_images/';
$filename = rand().$_FILES['file']['name'][$key];
$targetFile = $targetDir.$filename;
if (move_uploaded_file($temp_file,$targetFile)) {
$empty_img_arr[]= $filename;
$image = implode(',',$empty_img_arr);
$sql="UPDATE img SET Image='$image' WHERE User_id = '$memberid' ";//
if(!$qsql=mysqli_query($con,$sql))
{
echo mysqli_error($con);
}
}
}
}
非常感谢,非常感谢您有任何错误吗?我没有收到任何错误请看这里:感谢@MohammedYassineCHABLI现在一切正常所有图像移动到目标文件夹但只有一个图像名称将其插入数据库用新代码更新您的应答器请查看问题出在哪里