【问题标题】:Multiple upload filephp from two input从两个输入多个上传filephp
【发布时间】:2012-05-28 09:28:46
【问题描述】:

我需要使用 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);
        }
}

问题是当我只从一个输入上传文件时,另一个输入无论如何都会上传一个空文件。我该怎么办?

谢谢,马蒂亚

【问题讨论】:

  • 你有 ++$i 而不是 $i++ 这可能会导致问题...
  • @Gavin 只有将其用作更大语句的一部分时才会有所不同。如果您执行$i = 0; $j = $i++;,则$j 将为0,但如果您执行$i = 0; $j = ++$i;,则$j 将为1。就其本身而言,它们将具有完全相同的效果。 See here 了解更多信息。
  • 我不认为空对测试字符串值有好处。
  • 也不确定 is_array($fdata['name']),这不是数组的值而不是数组
  • 查看文件名,如果数组中为空则不上传。

标签: php jquery upload multifile-uploader


【解决方案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>

然后,您只需在代码当前回显上传文件名称的地方进行插入。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-13
    • 2014-09-26
    • 2019-11-30
    • 1970-01-01
    • 2015-06-27
    • 2023-02-12
    • 1970-01-01
    相关资源
    最近更新 更多