php - 如何使用 php 管理特定的一个用户或 session 用户上传高达 1GB 的总数据(如 dropbox)?

标签 php mysql

如何使用 php 管理特定的一个用户或 session 存储用户上传高达 1GB 的总数据(如视频、音乐),如 Dropbox? 表示在显示一些警告消息后总体数据上传 1 GB

目前我正在编写这样的上传文件的代码 if(isset($_FILES['文件'])){

$errors= array();
foreach($_FILES['files']['tmp_name'] as $key => $tmp_name ){
    $file_name = $key.$_FILES['files']['name'][$key];
    $file_size =$_FILES['files']['size'][$key];
    $file_tmp =$_FILES['files']['tmp_name'][$key];
    $file_type=$_FILES['files']['type'][$key];
             $allowedImageTypes = array("audio/aac","audio/mp4","audio/mpeg","audio/mp3","audio/mpg","audio/mpeg","audio/ogg","audio/oga","audio/wav","audio/webm");
                if (!in_array($file_type, $allowedImageTypes)) 
                {
                     echo ("<SCRIPT LANGUAGE='JavaScript'>
                       window.alert('Invalide file type')
                       window.location.href='music_upload.php';
                   </SCRIPT>");
                   exit;
                }
    if($file_size > 1000000000){
        $errors[]='File size must be less than 1 GB';
    }       
    $query="INSERT INTO `cp_drive`.`music_collection` ( `FILE_NAME`, `FILE_SIZE`,`FILE_TYPE`,`users_name`) VALUES ( '$file_name', '$file_size', '$file_type','$login_session')";


    $sel="select * from userregister where username='$login_session'";
    $a=mysqli_query($connection,$sel);
    $b=mysqli_fetch_array($a);
    $c=$b['unique_directory'];

    $desired_dir="$c/music";

    if(empty($errors)==true){
        if(is_dir($desired_dir)==false){
            mkdir("$desired_dir", 0700);        // Create directory if it does not exist
        }
        if(is_dir("$desired_dir/".$file_name)==false){
            move_uploaded_file($file_tmp,"$desired_dir/".$file_name);
        }else{                                  // rename the file if another one exist
            $new_dir="$desired_dir/".$file_name.time();
             rename($file_tmp,$new_dir) ;               
        }
     mysqli_query($connection,$query);          
    }else{
            print_r($errors);
    }
}
if(empty($error)){
    /*  echo ("<SCRIPT LANGUAGE='JavaScript'>
       window.alert('upload successfully')
       window.location.href='music_upload.php';
   </SCRIPT>");  */ 
    echo "<div id=\"successmsg\">upload successfully </div>";
        //header('Location:index.php');
    echo "<script>setTimeout(\"location.href = 'music_upload.php';\",1800);</script>";
}

}

在此代码中,验证检查文件是否小于 1GB,但如何管理用户所有上传数据最大 1GB???

最佳答案

在文件上传代码之前添加这样的if条件

if(isset($_FILES['files'])){

        $sql1 = ("SELECT SUM(FILE_SIZE) FROM music_collection where users_name='$login_session'");
        $rs1 = mysqli_query($connection,$sql1);
        $result1 = mysqli_fetch_array($rs1);



        $sql4 = ("SELECT SUM(FILE_SIZE) FROM compress_files where users_name='$login_session'");
        $rs4 = mysqli_query($connection,$sql4);
        $result4 = mysqli_fetch_array($rs4);

        $fin=$result[0]+$result2[0];  

            if($fin>$max_limit){  //check max upload limit

                echo "file size is"."$fin";
                echo "<div id=\"errormsg\">max limit reached..upload max 1GB data </div>";
                echo "<script>setTimeout(\"location.href = 'video_upload.php';\",1800);</script>";
                exit;
            }

关于php - 如何使用 php 管理特定的一个用户或 session 用户上传高达 1GB 的总数据(如 dropbox)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43610107/

相关文章:

php - 单独的查询是否足够好,或者我可以做某种连接吗?

mysql - 提取 Customer_Order 表中不存在的产品 ID

mysql - 将变量与查询结果中的第 n 行进行比较时,MySQL IF 语句的正确语法是什么?

PHP 在 5 x 3 表格中显示数据,分页包含缩略图和其他信息

php - 将 flv 与 mp3 合并,而不使用 FFMPEG 替换 flv 音频流

php - 获取包含最新嵌套对象的前 5 个文档

php - facebook/php-webdriver headless 下载

php - MySQL 选择 LEFT JOIN 中的最后一个图像

mysql - 除了性能之外,是否还有其他问题以字符串格式存储除 id 和 fk 之外的所有内容?

mysql - 从谷歌API获取地理数据,同时在数据库上创建新记录