2017-11-22 10 views
0

複数の画像をアップロードする必要があります。問題が2つあります。最初のものは携帯電話から2つ以上のファイルをアップロードできません。携帯電話からあなたはカメラを開く必要があり、それがPCにあればファイル選択のウィンドウを表示する必要がありますが、これはうまくいきますが、携帯電話では1つしか残っていませんが、これまではCrhomeを使ってAndroidで試しただけです) 2番目の詳細は最初の要素は保存されていません。どちらもないのでファイルだけであれば、位置[0]を取らないようですが、複数の画像を置くと最初の要素は保存されません他は正しく保存されています。私はしばらくの間試してきましたが、問題は見えません。私のファイルの構造を附属書:
カメラ\└───uploads
└───index.php
└───upload.php2つ以上の画像をアップロードするPHP

のindex.php:

<html> 
<head> 
    <meta charset="UTF-8"> 
    <title>upload</title> 
</head> 
<body> 
    <form action="upload.php" method="post" multipart="" enctype="multipart/form-data"> 
     <input type="file" name="img[]" accept="image/*" id="capture" capture="camera" multiple > 
     <input type="submit"> 
    </form> 
</body> 
</html> 

をそしてupload.php:これは私の作品

<?php 
      echo '<pre>'; 
      $img = $_FILES['img']; 

      if(!empty($img)) 
      { 
       $img_desc = reArrayFiles($img); 
       print_r($img_desc); 

       foreach($img_desc as $val) 
       { 
        $newname = date('YmdHis',time()).mt_rand().'.jpg'; 
        move_uploaded_file($val['tmp_name'],'./uploads/'.$newname); 
       } 
      } 

      function reArrayFiles($file) 
      { 
       $file_ary = array(); 
       $file_count = count($file['name']); 
       $file_key = array_keys($file); 

       for($i=0;$i<$file_count;$i++) 
       { 
        foreach($file_key as $val) 
        { 
         $file_ary[$i][$val] = $file[$val][$i]; 
        } 
       } 
       return $file_ary; 
      } 
     ?> 

答えて

0

、あなたの第二の問題を解決します。このホップ。

if (isset($_FILES['Gallery']) && is_array($_FILES['Gallery'])) { 
         $errors= array(); 
         foreach($_FILES['Gallery']['tmp_name'] as $key => $tmp_name) { 
         $file_name = $key.$_FILES['Gallery']['name'][$key]; 
         $file_size =$_FILES['Gallery']['size'][$key]; 
         $file_tmp =$_FILES['Gallery']['tmp_name'][$key]; 
         $file_type=$_FILES['Gallery']['type'][$key]; 
         if($file_size > 2097152){ 
          $errors[]='File size must be less than 2 MB'; 
         } 
         if (empty($errors)==true) { 
          if (is_dir('uploads')==false) { 
          mkdir('uploads', 0700);  // Create directory if it does not exist 
          } 

          if (file_exists("uploads/".$file_name)==false) { 
          move_uploaded_file($file_tmp,"uploads/".$file_name); 
          chmod("uploads/".$filename, 0777); 
          $Gallery_Link = "uploads/".$file_name; 
          } else {         // rename the file if another one exist 
          $Gallery_Link = "uploads/".time()."_".$file_name; 
          rename($file_tmp,$Gallery_Link) ; 
          } 

         } else { 
          echo $errors; 
         } 
         } 
        } 
+0

あなたの 'reArrayFiles'は間違っています。 'count($ file ['name'])'は、アップロードされたファイルの数を教えてくれません。 – chiliNUT

+0

同じ問題は、最初の画像は – Alphalapz

+0

数($ファイルUU間違いがあった[「名前」]は、あなたの完全なコードの罰金 – Alphalapz

関連する問題