0

如果之前已经回答过这个问题,我感到非常抱歉,但我已经在谷歌上搜索了一段时间,但没有找到答案。

我的问题

我已经使用 PHP 为我的网站上传了一个文件。我想成为啤酒,让用户可以选择更改他们上传的图像。当他们只能上传 1 张图片但现在我尝试添加更多图片时,我设法做到了。他们可以添加不止一张照片,但是在更改它们时我遇到了问题。

这是我的 1 张图片的代码(有效)

$newname = "$pid.jpg";
move_uploaded_file( $_FILES['fileField']['tmp_name'], "../inventory_images/$newname");
header("location: inventory_list.php"); 
exit();

这是我用来更改它的代码。

    if ($_FILES['fileField']['tmp_name'] != "") {
    // Place image in the folder 
    $newname = "$pid.jpg";
    move_uploaded_file($_FILES['fileField']['tmp_name'], "../inventory_images/$newname");
}
header("location: inventory_list.php");

这就是我现在将代码更改为多个图像的内容。

$image1 = "$pid Image1.jpg";
$image2 = "$pid Image2.jpg";
$image3 = "$pid Image3.jpg";
$image4 = "$pid Image4.jpg";
$image5 = "$pid Image5.jpg";
move_uploaded_file( $_FILES['fileField']['tmp_name'], "../inventory_images/$image1");
move_uploaded_file( $_FILES['fileField']['tmp_name'], "../inventory_images/$image2");
move_uploaded_file( $_FILES['fileField']['tmp_name'], "../inventory_images/$image3");
move_uploaded_file( $_FILES['fileField']['tmp_name'], "../inventory_images/$image4");
move_uploaded_file( $_FILES['fileField']['tmp_name'], "../inventory_images/$image5");
header("location: inventory_list.php"); 

这是我尝试过的,但我知道 if 存在逻辑错误

    if ($_FILES['fileField']['tmp_name'] != "") {
    // Place image in the folder 
$image1 = "$pid Image1.jpg";
$image2 = "$pid Image2.jpg";
$image3 = "$pid Image3.jpg";
$image4 = "$pid Image4.jpg";
$image5 = "$pid Image5.jpg";
move_uploaded_file( $_FILES['fileField']['tmp_name'], "../inventory_images/$image1");
move_uploaded_file( $_FILES['fileField']['tmp_name'], "../inventory_images/$image2");
move_uploaded_file( $_FILES['fileField']['tmp_name'], "../inventory_images/$image3");
move_uploaded_file( $_FILES['fileField']['tmp_name'], "../inventory_images/$image4");
move_uploaded_file( $_FILES['fileField']['tmp_name'], "../inventory_images/$image5");
}

这是我表格的一部分

      <tr>
  <td align="right">Product Image: 1</td>
  <td><div class="single">
    <a href="../inventory_images/<?php echo $id; ?> Image1.jpg" rel="lightbox" title="<?php echo $product_name; ?>"><img src="../inventory_images/<?php echo $id; ?> Image1.jpg" width="142" height="188" alt="<?php echo $product_name; ?>" /></a>
</div></td> 
  </tr>
        <tr>
    <td align="right"></td>
    <td><label>
      <input type="file" name="Image1" id="Image1" />
    </label></td>
  </tr>

谢谢你的帮助

4

2 回答 2

1

对于多个文件上传,输入文件字段必须是这样的(示例):

<input type="file" name="Images[]" id="Image1" />

在多个文件上传中,$_FILE 数组具有以下格式:

$_FILES['Images']['name'][0] // first file name
$_FILES['Images']['tmp_name'][0] // first file tmp_name

另请参阅 max_file_uploads 配置指令

这将对您有所帮助:http ://www.php.net/manual/en/features.file-upload.multiple.php

ps:在上面的链接中,请参见Donatas Olseviius的第一条评论:他修复了 $_FILE 数组。

于 2012-07-05T11:38:27.940 回答
1

$_FILES['fileField']不会包含您的图像,因为您输入的名称是Image1. 你必须使用$_FILES['Image1']. 但正如 Mouloud 所建议的,使用 insted 数组然后循环遍历它更容易。但是,如果您想给每个图像输入一个唯一的名称,也可以使用。

这是我的做法:

HTML:

<input type="file" name="image[1]" id="Image1" />
<input type="file" name="image[2]" id="Image2" />
<input type="file" name="image[3]" id="Image3" />
...

PHP:

foreach($_FILES['image']['tmp_name'] as $i => $tmpName) {
    if ($tmpName){
        move_uploaded_file( $tmpName, "../inventory_images/{$pid}Image{$i}.jpg");
    }
}
于 2012-07-05T11:43:15.880 回答