我环顾四周,一直在努力寻找如何上传多个图像(.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)
任何建议都非常感谢大家!干杯
首先,添加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.
| 归档时间: |
|
| 查看次数: |
9856 次 |
| 最近记录: |