2012-03-19 36 views
1

複数の画像をアップロードできるように画像アップロードフォームを修正する必要があります(正確には6個)。別の入力を追加し、他の人が示唆するように名前の値を変更しようとしましたが、最初の入力から複製された同じ画像が表示されます。私はそれがおそらく単純なものだと知っていますが、私はPHP開発者ではないので、解決策を見つけることができませんでした。複数の画像をアップロードする、PHP

if(isset($_FILES['image']) && $_FILES['image']['tmp_name'] != '') { 
     $tempext = explode('.', $_FILES['image']['name']); 
     $tempext = strtolower($tempext[count($tempext) - 1]); 
     switch($tempext) { 
      case 'jpg': 
      case 'jpeg': 
       $ext = '.jpg'; 
       break; 
      default: 
       $ext = false; 
     } 

     if($ext != false && move_uploaded_file($_FILES['image']['tmp_name'], $_SERVER['DOCUMENT_ROOT'] . '/img/profiles/' . $id . $ext)) { 
      $imagesuccess = chmod($_SERVER['DOCUMENT_ROOT'] . '/img/profiles/' . $id . $ext, 0644) ? 'yes' : 'no'; 
     } else { 
      $imagesuccess = 'no'; 
     } 
    } 

、入力用:

はここで画像をアップロードするためのコードです

<div class="control-container<?php if((isset($_FILES['image']) && !empty($_FILES['image']['name']))) echo ' error'; ?>"> 
      <label for="image">Large Image</label> 
      <div class="multifield"> 
       <?php 
       if(file_exists($_SERVER['DOCUMENT_ROOT'] . '/img/profiles/' . $id . '.jpg')) { 
        echo '<img src="/img/profiles/' . $id . '.jpg?' . rand() . '" width="310px" />'; 
       } 
       ?> 
       <input type="file" name="image" id="image" /> 
      </div> 
</div> 

任意の助けもいただければ幸いです。あなたは、複数の入力フィールドを持っている必要があるだろう

おかげ

答えて

4

<input type="file" name="image1" /> 
<input type="file" name="image2" /> 
etc... 

として、個々のファイルへのアクセス:

$_FILES['image1'][...] 
$_FILES['image2'][...] 
etc... 

か、PHP固有の配列表記を使用することができますがショートカット:

<input type="file" name="image[]" /> 
<input type="file" name="image[]" /> 
配列表記を使用する場合、PHPファイルアレイ独自のアレイ内の個々のデータポイントを作ること

$_FILES['image']['tmp_name'][0]; 
$_FILES['image']['tmp_name'][1]; 
etc... 

注意。ファイルのデータを1つのarraでまとめるのではなく、個々のビットを複数の配列に分散させます。

+0

私は両方のソリューションを試しましたが、フォームはデータベースに最後の入力フィールドを使用してアップロードされた画像を1つだけ送信します。 – Ryan

+0

'var_dump($ _ FILES)'は何を表示しますか?あなたのコードを構造化してください。 –

+0

さて、私はちょっと混乱して、それがデータベースに現れているように見えます。入力名とURLに_02を追加したにもかかわらず、idの最後に1が追加されています。それはまだウェブサイトにイメージを引き下げたいと思わない。 – Ryan

0

さらにファイルをアップロードする必要がある場合は、name要素を変更してください。たとえば、JavaScriptで入力フィールドを追加することができます。すべての要素にはname="images[]"があり、提出後にはvar_dump($_FILES)で得られたものを見ることができます。

2

フォームに6つのファイル入力がある場合、$ _FILESには配列が含まれている必要があります。あなたの処理ファイルの中にprint_r($_FILES)でチェックしてください。複数の画像をアップロードするための

0

基本スニペット:私はいけないuはそれが残飯あなたが例えばwhant何を単一の入力を使用する理由あなたの問題はHTML部分内かもしれないと思う@Ryan

<html> 
<?php 
define("UPLOAD_DIR", "/path/to/uploads/"); 

for ($i = 0; $i < count($_FILES["file"]["tmp_name"]); $i++) { 
    if (is_uploaded_file($_FILES["file"]["tmp_name"][$i])) { 
     move_uploaded_file($_FILES["file"]["tmp_name"][$i], UPLOAD_DIR . $_FILES["file"]["name"][$i]); 
    } 
} 
?> 
<body> 
    <form method="post" enctype="multipart/form-data"> 
    <input name="file[]" type="file" /><br /> 
    <input name="file[]" type="file" /><br /> 
    <input name="file[]" type="file" /><br /> 
    <input type="submit" /> 
    </form> 
</body> 
</html> 
0

<form method="post" enctype="multipart/form-data"> 
    <input name="file[]" type="file" multiple="true"><br /> 
    <input type="submit" /> 
    </form> 
関連する問題