gpt4 book ai didi

php - 将多个图像文件上传到php mysql gallery

转载 作者:可可西里 更新时间:2023-11-01 07:49:47 25 4
gpt4 key购买 nike

我让这个厨房工作了大约 65% 我想要的地方。我想知道是否有人可以查看以下代码并告诉我如何将多张图片上传到我的画廊。

这是代码。

简单的管理表单代码:

    <form enctype="multipart/form-data" action="uploader.php" method="POST">


Category: <select class="text" name="dataType[]">
<option value="treeremoval" selected="selected">treeremoval</option>
<option value="treetrimming" >treetrimming</option>
<option value="treebracing" >treebracing</option>
<option value="stumpgrinding" >stumpgrinding</option>
<option value="firewood" >firewood</option>
<option value="cleanup" >cleanup</option>
</select>
<br /><br />

Caption: <input type="text" name="title[]">
<br /><br />

Image to upload: <input type="file" name="image[]" />
<br /><br />






Category: <select class="text" name="dataType[]">
<option value="treeremoval" selected="selected">treeremoval</option>
<option value="treetrimming" >treetrimming</option>
<option value="treebracing" >treebracing</option>
<option value="stumpgrinding" >stumpgrinding</option>
<option value="firewood" >firewood</option>
<option value="cleanup" >cleanup</option>
</select>
<br /><br />

Caption: <input type="text" name="title[]">
<br /><br />

Image to upload: <input type="file" name="image[]" />
<br /><br />



<input type="submit" value="Upload">
</form>

uploader.php代码:


    <?php
include($_SERVER['DOCUMENT_ROOT'] . "/connections/dbconnect.php");

$dataType = mysql_real_escape_string($_POST["dataType"][$i]);
$title = mysql_real_escape_string($_POST["title"][$i]);

$fileData = pathinfo(basename($_FILES["image"]["name"][$i]));

$fileName = uniqid() . '.' . $fileData['extension'][$i];

$target_path = ($_SERVER['DOCUMENT_ROOT'] . "/images/gallery/" . $fileName);


for($i=0;$i<count($_FILES["image"]["name"]);$i++){

$dataType = mysql_real_escape_string($_POST["dataType"][$i]); // get the dataType with the same key - $i
$title = mysql_real_escape_string($_POST["title"][$i]); // get the title with the same key - $i

$fileData = pathinfo(basename($_FILES["image"]["name"][$i]));
while(file_exists($target_path))
{
$fileName = uniqid() . '.' . $fileData['extension'];
$target_path = ($_SERVER['DOCUMENT_ROOT'] . "/images/gallery/" . $fileName);
}

if (move_uploaded_file($_FILES["image"]["tmp_name"][$i], $target_path))
{ // The file is in the images/gallery folder. Insert record into database by
// executing the following query:
$sql="INSERT INTO images (data_type, title, file_name)"."VALUES('$dataType','$title','$fileName')";
$retval = mysql_query($sql);



echo "The image {$_FILES['image']['name'][$i]} was successfully uploaded and added to the gallery<br />
<a href='index.php'>Add another image</a><br />";


}
else
{
echo "There was an error uploading the file {$_FILES['image']['name'][$i]}, please try again!<br />";
}
} // close your foreach
?>

我尝试将表单代码复制 4 次,但它只会将 1 张图片上传到图库。

如有任何帮助,我们将不胜感激。

谢谢!

最佳答案

在您的表单中,添加多个文件输入。一种方法是使用数组名称 - image[]

Image to upload: <input type="file" name="image[]" /><br />
Image to upload: <input type="file" name="image[]" /><br />
Image to upload: <input type="file" name="image[]" /><br />
.... // as many as you want. Just be aware of upload_max_filesize, memory_limit, post_max_size etc.
<br />

然后在您的 uploader.php 中,用 for 循环包装您的文件上传代码

for($i=0;$i<count($_FILES["image"]["name"]);$i++){

$fileData = pathinfo(basename($_FILES["image"]["name"][$i]));

...

if (move_uploaded_file($_FILES["image"]["tmp_name"][$i], $target_path))
{
...

echo "The image {$_FILES['image']['name'][$i]} was successfully uploaded and added to the gallery<br />";

}
else
{
echo "There was an error uploading the file {$_FILES['image']['name'][$i]}, please try again!<br />";
}
} // close your foreach

手册中有一个很大的部分介绍了上传文件时的常见陷阱,尤其是多个文件。 http://www.php.net/manual/en/features.file-upload.common-pitfalls.php


如果你想做多个其他的,可以用同样的方式完成(我缩写了选择以减少复制/粘贴)-

<form enctype="multipart/form-data" action="uploader.php" method="POST">

// 1st set
Category: <select class="text" name="dataType[]" />
...
</select><br />
<br />

Caption: <input type="text" name="title[]" /><br />
<br />

Image to upload: <input type="file" name="image[]" /><br />
<br />

// 2nd set
Category: <select class="text" name="dataType[]" />
...
</select><br />
<br />

Caption: <input type="text" name="title[]" /><br />
<br />

Image to upload: <input type="file" name="image[]" /><br />
<br />

// and so on, as many as you want
...
<input type="submit" value="Upload">
</form>

和你的 php,将 for 循环放在所有元素上

for($i=0;$i<count($_FILES["image"]["name"]);$i++){

$dataType = mysql_real_escape_string($_POST["dataType"][$i]); // get the dataType with the same key - $i
$title = mysql_real_escape_string($_POST["title"][$i]); // get the title with the same key - $i

$fileData = pathinfo(basename($_FILES["image"]["name"][$i]));

...

if (move_uploaded_file($_FILES["image"]["tmp_name"][$i], $target_path))
{
...

echo "The image {$_FILES['image']['name'][$i]} was successfully uploaded and added to the gallery<br />";

}
else
{
echo "There was an error uploading the file {$_FILES['image']['name'][$i]}, please try again!<br />";
}
} // close your foreach

编辑
你快到了。删除 for 循环上方的重复代码。删除 basename(),因为这会导致您的 extension 失败,pathinfo() 将返回 ['basename']

<?php
include($_SERVER['DOCUMENT_ROOT'] . "/connections/dbconnect.php");

for($i=0;$i<count($_FILES["image"]["name"]);$i++){
if($_FILES["image"]["name"][$i] != ''){ // don't insert if file name empty
$dataType = mysql_real_escape_string($_POST["dataType"][$i]);
$title = mysql_real_escape_string($_POST["title"][$i]);

$fileData = pathinfo($_FILES["image"]["name"][$i]);

$fileName = uniqid() . '.' . $fileData['extension'];
$target_path = $_SERVER['DOCUMENT_ROOT'] . "/images/gallery/" . $fileName;

while(file_exists($target_path)){
$fileName = uniqid() . '.' . $fileData['extension'];
$target_path = $_SERVER['DOCUMENT_ROOT'] . "/images/gallery/" . $fileName;
}

if (move_uploaded_file($_FILES["image"]["tmp_name"][$i], $target_path)){ // The file is in the images/gallery folder.
// Insert record into database by executing the following query:
$sql="INSERT INTO images (data_type, title, file_name) "."VALUES('$dataType','$title','$fileName')";
$retval = mysql_query($sql);

echo "The image {$_FILES['image']['name'][$i]} was successfully uploaded and added to the gallery<br />
<a href='index.php'>Add another image</a><br />";
}
else
{
echo "There was an error uploading the file {$_FILES['image']['name'][$i]}, please try again!<br />";
}
}
} // close your foreach
?>

关于php - 将多个图像文件上传到php mysql gallery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17603685/

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