2012-05-28 8 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 ++;''$ 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> 

당신은 단지 다음 삽입을 할 필요가 어디 코드는 현재 업로드 된 파일의 이름입니다.