0

これが以前に回答されている場合は非常に申し訳ありませんが、しばらくGoogleを探していて、回答が見つかりません.

私の問題

自分のサイトに 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

$_FILES['fileField']入力の名前が であるため、画像は含まれませんImage1。を使用する必要があります$_FILES['Image1']。しかし、Mouloud が示唆したように、挿入された配列を使用して、それをループする方が簡単です。ただし、各画像入力に一意の名前を付けたい場合は、それも機能します。

これが私がそれを行う方法です:

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 に答える
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

追伸:上記のリンクで、Donatas Olseviiusによる最初のコメントを参照してください: 彼は $_FILE 配列を修正しました。

于 2012-07-05T11:38:27.940 に答える