2012-05-28 2 views
0

Мне нужно загрузить некоторые файлы (изображения, но это не имеет значения) с помощью jquery и php. Я нахожу плагин плагина jquery для создания нескольких файлов для загрузки, http://www.fyneworks.com/jquery/multiple-file-upload/. Таким образом, у меня есть эти два входа:Несколько файлов загрузки файлов с двух входных данных

<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; 'then' $ 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> 

Вы только тогда нужно сделать вставки, где code В настоящее время echo - это имя загруженного файла.

Смежные вопросы