2012-05-28 57 views
0

我需要上傳一些文件(圖像,但沒關係)使用jQuery和PHP。 我找到一個jQuery插件插件,使多個上傳文件http://www.fyneworks.com/jquery/multiple-file-upload/。所以,我有兩個輸入:從兩個輸入多個上傳filephp

<script type="text/javascript" language="javascript">     
     $(function(){      
     $('#immagini').MultiFile({  
     list: '#lista-immagini'   
     });   
     });    
</script>  
<input type="file" name="immagini[]" id="immagini" accept="gif|jpg|tiff" maxlength="10" /> 

<script type="text/javascript" language="javascript">     
     $(function(){      
     $('#plan').MultiFile({  
     list: '#lista-plan'   
     });   
     });    
</script>  
<input type="file" name="plan[]" id="plan" accept="gif|jpg|tiff" maxlength="10" /> 

和PHP文件從窗體調用是:

$files = array(); 
$fdata = $_FILES['immagini']; 


if(isset($_FILES['immagini'])) 
if(is_array($fdata['name']) && !empty($fdata['name'])){ 
     for($i=0;$i<count($fdata['name']);++$i){ 
      $files[]=array(
       'name' =>$fdata['name'][$i], 
       'tmp_name'=>$fdata['tmp_name'][$i], 
       'type' => $fdata['type'][$i], 
       'size' => $fdata['size'][$i], 
       'error' => $fdata['error'][$i], 
     ); 
     } 

     foreach($files as $file){ 
      $tmpName = $file['tmp_name']; 
      $fp = fopen($tmpName, 'r'); 
      $immagine = fread($fp, filesize($tmpName)); 
      $immagine = addslashes($immagine); 
      $DB->query('INSERT INTO immagini(id_annuncio, immagine) values('.$_GET['id'].', "'.$immagine.'")'); 
      fclose($fp); 
     } 
} 


    $files = array(); 
$fdata = $_FILES['plan']; 

    if(isset($_FILES['plan'])) 
if(is_array($fdata['name']) && !empty($fdata['name'])){ 
     for($i=0;$i<count($fdata['name']);++$i){ 
      $files[]=array(
       'name' =>$fdata['name'][$i], 
       'tmp_name'=>$fdata['tmp_name'][$i], 
       'type' => $fdata['type'][$i], 
       'size' => $fdata['size'][$i], 
       'error' => $fdata['error'][$i], 
      ); 
     } 
     foreach($files as $file){ 
      $tmpName = $file['tmp_name'];   
      $fp = fopen($tmpName, 'r'); 
      $immagine = fread($fp, filesize($tmpName)); 
      $immagine = addslashes($immagine); 
      $DB->query('INSERT INTO planimetrie(id_annuncio, planimetria) values('.$_GET['id'].', "'.$immagine.'")'); 
      fclose($fp); 
     } 
} 

的問題是,當我只從一個輸入上傳文件,另一個輸入上傳反正一個空文件。我能怎麼做?

感謝,馬蒂亞

+0

你有'++ $ i'而不是'$ i ++'這可能會導致問題... – Gavin

+1

@Gavin如果作爲一個更大的語句的一部分使用,這隻會有所作爲。如果你做'$ i = 0; $ j = $ i ++;'then'$ j'將會是0,但是如果你做'$ i = 0; $ j = ++ $ i;'然後'$ j'將爲1.它們自己的效果完全相同。 [見這裏](http://php.net/manual/en/language.operators.increment.php)瞭解更多信息。 – DaveRandom

+0

我不認爲空對測試字符串值是有好處的。 – allen213

回答

1

下面的代碼工作正常,我,所以它可能涉及到內部的你做什麼的發言:

<? 
    if(isset($_FILES['immagini'])) 
    { 
     foreach($_FILES['immagini']['name'] as $index => $name) 
     { 
      if($_FILES['immagini']['size'][$index] > 0) 
      { 
       echo '<br />' . $name; 
      } 
     } 
    } 

    if(isset($_FILES['plan'])) 
    { 
     foreach($_FILES['plan']['name'] as $index => $name) 
     { 
      if($_FILES['plan']['size'][$index] > 0) 
      { 
       echo '<br />' . $name; 
      } 
     } 
    } 

?> 
<form method="post" enctype="multipart/form-data"> 
    <input type="file" name="immagini[]" /> 
    <input type="file" name="immagini[]" /> 
    <input type="file" name="immagini[]" /> 
    <input type="file" name="plan[]" /> 
    <input type="file" name="plan[]" /> 
    <input type="file" name="plan[]" /> 
    <input type="submit" /> 
</form> 

你就在這時,需要做插入其中代碼當前echo是上傳文件的名稱。