如何使用 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/