Php 让用户在会话期间发送多张图片
我创建了一个名为creativemedia的数据库,其中包含两个表(图像和用户信息)。我正在尝试创建一个页面,用户可以上传图片并在同一页面上查看。用户应该能够一次只插入一个图像。我遇到的问题是,在成功插入1个图像后,我无法提交第二个图像,因为它只是回显一条内置的错误消息。以下是我用来发送图像的所有代码: 页面顶部:Php 让用户在会话期间发送多张图片,php,session,Php,Session,我创建了一个名为creativemedia的数据库,其中包含两个表(图像和用户信息)。我正在尝试创建一个页面,用户可以上传图片并在同一页面上查看。用户应该能够一次只插入一个图像。我遇到的问题是,在成功插入1个图像后,我无法提交第二个图像,因为它只是回显一条内置的错误消息。以下是我用来发送图像的所有代码: 页面顶部: <?php session_start(); if(!$_SESSION['username'] AND (!$_SESSION['user_id'])) { header("
<?php
session_start();
if(!$_SESSION['username'] AND (!$_SESSION['user_id'])) {
header("location: index.php");
}
?>
主体:
<?php
mysql_connect("localhost","root","");
mysql_select_db("creativemedia");
if(isset($_POST['Upload'])) {
$allowedExts = array("jpeg", "jpg", "png", "JPG");
$temp = explode(".", $_FILES["image"]["name"]);
$extension = end($temp);
if ((($_FILES["image"]["type"] == "image/jpeg")
|| ($_FILES["image"]["type"] == "image/JPG")
|| ($_FILES["image"]["type"] == "image/jpg")
|| ($_FILES["image"]["type"] == "image/png"))
&& ($_FILES["image"]["size"] < 500000000)
&& in_array($extension, $allowedExts))
{
if ($_FILES["image"]["error"] > 0)
{
echo "Return Code: " . $_FILES["image"]["error"] . "<br>";
}
else
{
if (file_exists("Images Upload/" . $_FILES["image"]["name"]))
{
echo "<script>alert('This file already exists, please insert a different image')</script>";
}
else
{
if(move_uploaded_file($_FILES["image"]["tmp_name"], "Images Upload/" . $_FILES["image"]["name"])){
$target= "Images Upload/".$_FILES["image"]["name"];
$sessionid= $_SESSION['user_id'];
$query= "insert into images(UserID, Image) values('$sessionid','$target')";
if(mysql_query($query)){
echo"<script>alert('Upload Successful!')</script>";
}
else{echo "this isn't sending the information";}
}
else{echo "this isn't working";}
}
}
}
else
{
echo"<script>alert('Please select an image!')</script>";
}
}
?>
确保在html代码中,将[]放在文件名“image”之后。使用for循环提交每个图像。希望这能有所帮助。以下是多文件上传时需要记住的主要事项。您知道其中的大多数代码,可以通过它们来确定代码遗漏的地方
enctype是必须的
[]是必须的
对于loop或foreach循环,要一个接一个地提交图像,请注意在您发布的代码后添加$i
对于($i=0;$i
//你的mime类型代码等等
$target=“Images Upload/”$\u文件[“image”][“name”][$i]
//插入查询
}
会话不是上传图像的强制要求。我不确定在您的代码中使用它们是否有任何特定的原因。旁注:&
优先于和我们还需要查看您的HTML表单。我看到很多if,else,else,else。。。为什么不如果,否则如果,否则如果,否则?他没有做一个while循环。上传后他正在刷新页面。我认为问题可能是文件名相同,因此存在覆盖问题。他需要用$filename=md5($username.$date)随机化名称,我指的是日期(U)函数。所以每一秒你都会得到一个不同的号码。同意。。我认为用户必须明确他是使用单个文件按钮一次上载多个图像还是使用多个文件按钮上载不同的图像上载多个文件(同时)时需要使用foreach
循环。如果用户一次只上传一个文件,那么使用name=“file[]”
将没有帮助。把问题再读一遍。“我遇到的问题是,在成功插入一个图像后,我无法提交第二个图像,因为它只是回显了一条内置的错误消息。”会话用户必须能够插入任意多个图像,但我只允许他们一次插入一个图像。问题是会话用户永远只能发送一张图片。因此,即使他们注销然后再次登录,他们也无法插入其他图像。我想知道的是,我如何才能让会话用户能够连续插入图像,而不会出现任何问题。谢谢