qq_41265012 2022-02-10 19:46 采纳率: 70%
浏览 28
已结题

php post上传文件,如果有多个用户上传,只能1个1个排队上传,能否同时并行多个用户同时上传文件?

php post上传文件,如果有多个用户上传,只能1个1个排队上传,能否同时并行多个用户同时上传文件?

  • 写回答

2条回答 默认 最新

  • ilmss 2022-02-11 09:38
    关注

    给你实现一个:
    前端代码:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>文件上传</title>
    </head>
    <body>
    
        <form action="upload.php" method="post" enctype="multipart/form-data">
            
            <input type="hidden" name="MAX_FILE_SIZE" value="1000000">
            选择文件1:<input type="file" name="myfile[]"><br>
            选择文件2:<input type="file" name="myfile[]"><br>
            选择文件3:<input type="file" name="myfile[]"><br>
            <input type="submit" value="上传文件">
    
        </form>
    
    </body>
    </html>
    

    后端代码:

    <?php
    
    $allowtype = array("gif","png","jpg"); //允许上传的文件格式
    $size = 1000000; //设置允许大小1M以内的文件
    $path = "./uploads"; //设置上传后保存文件的路径
    
    
    //判断文件是否可以上传到服务器 $_FILES['myfile'][error]为0表示成功
    //循环
    for( $i = 0;$i < count($_FILES['myfile']['error']);$i++ ){
    
        $upfile[$i] = $_FILES['myfile']['name'][$i];
    
        if($_FILES['myfile']['error'][$i]>0){
    
            echo "上传错误";
            switch($_FILES['myfile']['error'][$i]){
            
                case 1: die('第'.($i+1).'个文件上传文件大小超出了PHP配置文件中的约定值:upload_max_filesize');
                case 2: die('上传第'.($i+1).'个文件大小超出了表单中的约定值:MAX_FILE_SIZE');
                case 3: die('第'.($i+1).'个文件只被部分上传');
                case 4: die('第'.($i+1).'个文件没有上传');
                default: die('未知错误');
            }
        }
    
    
    
        //判断上传的文件是否为允许的文件类型,通过文件的后缀名
        //array_pop 弹出并返回数组中的最后一个元素,并将array的长度减1
        $hz[$i] = array_pop(explode(".",$_FILES['myfile']['name'][$i]));
        if(!in_array($hz[$i],$allowtype)){
    
            die("第".($i+1)."个文件后缀是<b>{$hz}</b>,不是允许的文件类型!");
        }
    
        /*也可通过获取上传文件的MIME类型中的主类型和子类型,来限制文件上传的类型
        list($maintype,$subtype) = explode("/",$_FILES['myfile']['type']);
        if($maintype == "text"){
    
            die("不能上传文本文件");
        }
        */
    
        //判断上传的文件是否允许大小
        if($_FILES['myfile']['size'][$i]>$size){
    
            die("第".($i+1)."个文件超过了允许的<b>{$size}</b>");
        }
    
    
        //为了系统安全,同时也为了同名文件不被覆盖,上传后将文件名使用系统定义
        $filename[$i] = date("YmdHis").rand(100,999).".".$hz[$i];
    
    
        //判断是否为上传文件
        if(is_uploaded_file($_FILES['myfile']['tmp_name'][$i])){
    
            if(!move_uploaded_file($_FILES['myfile']['tmp_name'][$i],$path.'/'.$filename[$i])){
            
                die("不能将文件移动到指定目录");
            }
        }else{
    
            die("上传文件{$_FILES['myfile']['name'][$i]}不是一个合法文件");
        }
    
        //如果文件上传成功
        $filesize[$i] = $_FILES['myfile']['size'][$i]/1024;
        echo "文件{$upfile[$i]}上传成功,保存在目录{$path}中,文件大小为{$filesize[$i]}KB<br>";
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 2月19日
  • 已采纳回答 2月11日
  • 创建了问题 2月10日

悬赏问题

  • ¥15 求指导ADS低噪放设计
  • ¥15 CARSIM前车变道设置
  • ¥50 三种调度算法报错 有实例
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存