多张照片上传PHP

0 html php upload

我环顾四周,一直在努力寻找如何上传多个图像(.jpg/.png/etc).对于我的任务,我希望上传5张图片到数据库记录.到目前为止,我很难在一个记录中上传5个.我已经在Ws3网站上使用过PHP,它运行成功,但这段代码只适用于一个图像.

PHP代码 -

 $allowedExts = array("gif", "jpeg", "jpg", "png");
    $temp = explode(".", $_FILES["file"]["name"]);
    $extension = end($temp);

if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 2000000)
&& in_array($extension, $allowedExts))
{
  if ($_FILES["file"]["error"] > 0)
  {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
  }
  else
  {

    if (file_exists("upload/" . $_FILES["file"]["name"]))
    {

    }
    else
    {
        move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . uniqid() . "_" . $_FILES["file"]["name"]);
    }
  }
}
else
{
    $error =  "Invalid file";
}
Run Code Online (Sandbox Code Playgroud)

我的HTML如下,

<label for="file">Filename:</label>
        <input type="file" name="file" id="file">

        <input type="file" name="file" id="file">

        <input type="file" name="file" id="file">

        <input type="file" name="file" id="file">

        <input type="file" name="file" id="file">
Run Code Online (Sandbox Code Playgroud)

任何建议都非常感谢大家!干杯

Jor*_*ing 5

首先,添加enctype="multipart/form-data"到您的表单.然后将file字段名称更改为:

<input type="file" name="file[]" id="file" >
<input type="file" name="file[]" id="file" >
<input type="file" name="file[]" id="file" >
Run Code Online (Sandbox Code Playgroud)

这将创建一个提交的文件数组.现在,您将能够对foreach文件进行操作.快速举例:

foreach ($_FILES['file']['name'] as $f => $name) {

}
Run Code Online (Sandbox Code Playgroud)

围绕现有代码,然后添加[$f]到每个$_FILES["file"]变量.所以$_FILES["file"]["size"]必须改为$_FILES["file"]["size"][$f]等等.在foreach我所指$name$_FILES["file"]["name"][$f],所以你可以使用$name.

完整的PHP代码基于您的脚本:

foreach ($_FILES['file']['name'] as $f => $name) {
 $allowedExts = array("gif", "jpeg", "jpg", "png");
    $temp = explode(".", $name);
    $extension = end($temp);

if ((($_FILES["file"]["type"][$f] == "image/gif")
|| ($_FILES["file"]["type"][$f] == "image/jpeg")
|| ($_FILES["file"]["type"][$f] == "image/jpg")
|| ($_FILES["file"]["type"][$f] == "image/png"))
&& ($_FILES["file"]["size"][$f] < 2000000)
&& in_array($extension, $allowedExts))
{
  if ($_FILES["file"]["error"][$f] > 0)
  {
    echo "Return Code: " . $_FILES["file"]["error"][$f] . "<br>";
  }
  else
  {

    if (file_exists("upload/" . $name))
    {

    }
    else
    {
        move_uploaded_file($_FILES["file"]["tmp_name"][$f], "upload/" . uniqid() . "_" . $name);
    }
  }
}
else
{
    $error =  "Invalid file";
}
}
Run Code Online (Sandbox Code Playgroud)

最后,我建议你在不同的网站上了解更多关于PHP的知识.W3schools很容易,但也不是你最好的选择.例如,您正在检查:

    if ((($_FILES["file"]["type"][$f] == "image/gif")
|| ($_FILES["file"]["type"][$f] == "image/jpeg")
|| ($_FILES["file"]["type"][$f] == "image/jpg")
|| ($_FILES["file"]["type"][$f] == "image/png"))
&& ($_FILES["file"]["size"][$f] < 2000000)
&& in_array($extension, $allowedExts))
Run Code Online (Sandbox Code Playgroud)

但只有数组就足够了,像这样:

    if ($_FILES["file"]["size"][$f] < 2000000 && in_array($extension, $allowedExts))
Run Code Online (Sandbox Code Playgroud)

$_FILES["file"]["type"]并不总是按预期返回类型..我们在音频和视频文件中多次看到它.关于涉及W3schools脚本的MIME类型的SO的另一篇文章:PHP:$ _FILES ["file"] ["type"]没用

在向StackOverflow提出新问题之前,请进行搜索.我刚刚给你写了一个很长的答案,但是对于这类问题已经做过很多次了.https://stackoverflow.com/search?q=multiple+upload+php

希望它能回答你的问题,并且好好学习PHP.