0

jqueryとphpを使用して、いくつかのファイル(画像は問題ありません)をアップロードする必要があります。複数のアップロード ファイルを作成するための jquery プラグイン プラグインを見つけましたhttp://www.fyneworks.com/jquery/multiple-file-upload/。だから私はこれらの2つの入力を持っています:

<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);
        }
}

問題は、1 つの入力からのみファイルをアップロードすると、他の入力がとにかく空のファイルをアップロードすることです。どのようにできるのか?

ありがとう、マティア

4

1 に答える 1

1

次のコードは私にとっては問題なく機能するため、for ステートメント内で行っていることに関連している可能性があります。

<?
    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>

次に、コードがアップロードされたファイルの名前を現在エコーしている場所に挿入する必要があります。

于 2012-05-28T09:50:50.540 に答える