Как получить размер видео файла? - PullRequest
0 голосов
/ 13 марта 2019

Мне нужно, чтобы этот скрипт проверял, является ли загруженный файл видеофайлом или нет, а также слишком велик или не превышает размер файла. Поэтому нужно заменить getimagesize на что-то еще, что получит размер видеофайла. Как я могу сделать это? Какую функцию использовать здесь? getvideosize функция не существует. Вот где я застрял.

<?php 

if($_SERVER["REQUEST_METHOD"] == "POST") 
    { 
        //Check whether the file was uploaded or not without any errors. 
        if(!isset($_FILES["id_verification_video_file"]) && 
$_FILES["id_verification_video_file"]["Error"] == 0) 
        { 
            $Errors = Array(); 
            $Errors[] = "Error: " . $_FILES["id_verification_video_file"] 
["ERROR"]; 
        print_r($_FILES); ?><br><?php 
        print_r($_ERRORS); 
        exit(); 
    } 
    else 
    { 
        //Feed Id Verification Video File Upload Directory path. 
        $directory_path = "uploads/videos/id_verifications/"; 
        //Make Directory under $user in 'uploads/videos/id_verifications' 
        Folder. 
        if(!is_dir($directory_path . $user)) //IS THIS LINE CORRECT ?
        { 
            $mode = "0777"; 
            mkdir($directory_path . $user, "$mode", TRUE); //IS THIS LINE 
        CORRECT ?
        } 

        //Grab Uploading File details. 
        $Errors = Array(); //SHOULD I KEEP THIS LINE OR NOT ?
        $file_name = $_FILES["id_verification_video_file"]["name"]; 
        $file_tmp = $_FILES["id_verification_video_file"]["tmp_name"]; 
        $file_type = $_FILES["id_verification_video_file"]["type"]; 
        $file_size = $_FILES["id_verification_video_file"]["size"]; 
        $file_error = $_FILES['id_verification_video_file']['error']; 

$file = $_FILES["id_verification_video_file"]["name"];

// in PHP 4, we can do:
$fhandle = finfo_open(FILEINFO_MIME);
$mime_type = finfo_file($fhandle,$file); // e.g. gives "video/mp4" 

// in PHP 5, we can do:

$file_info = new finfo(FILEINFO_MIME); // object oriented approach!
$mime_type = $file_info->buffer(file_get_contents($file));  // e.g. gives 
"video/mp4"

 switch($mime_type) {
 case "video/mp4":
 // my actions go here...
}


//  Let's assume that the name attribute of the file input field I have 
used is "id_verification_video_file"

$tempFile =  $_FILES['id_verification_video_file']['tmp_name'];  // path of 
the temp file created by PHP during upload. I MOST LIKELY GOT THIS LINE 
WRONG AT THE END PART. HOW TO CORRECT THIS ?
$videoinfo_array = getimagesize($tempFile);   // returns a false if not a 
valid image file

if ($videoinfo_array !== false) {
$mime_type = $videoinfo_array['mime'];
switch($mime_type) { 

 case "video/mp4":
 // your actions go here...
 move_uploaded_file("$file_tmp", "$directory_path" . "$user/" . 
"$file_name"); //IS THIS LINE CORRECT ?
//Notify user their Id Verification Video File was uploaded successfully. 
echo "Your Video File \"$file_name\" has been uploaded successfully!"; 
exit(); 

    }
}
else {
    echo "This is not a valid video file";
}

 }
    }

    ?> 

<form METHOD="POST" ACTION="" enctype="multipart/form-data"> 
<fieldset> 
<p align="left"><h3><?php $site_name ?> ID Video Verification Form</h3></p> 
<div class="form-group"> 
    <p align="left"<label>Video File: </label> 
    <input type="file" name="id_verification_video_file" 
id="id_verification_video_file" value="uploaded 'Id Verification Video 
File.'"></p> 
</div> 
</fieldset> 
<p align="left"><button type="submit" class="btn btn-default" 
name="id_verification_video_file_submit">Submit!</button></p> 
</form> 

</body> 
</html> 

<?php 
include 'footer_account.php'; //Required on all webpages of the Site. 
?> 

Лучшее, что я сделал, выше. Я был бы признателен, если бы вы, ребята, могли добавить правильные строки, где они должны быть, и добавить комментарии, чтобы я мог легко заметить ваши изменения и извлечь уроки из исправлений.

EDIT: Ребята, мне удалось исправить многие вещи в моем текущем обновлении. Но одна новая проблема. Move_uploaded_file () не выполняется. Это почему ? Посмотри. Я на самом деле написал свои вопросы к вам в комментариях моего кода в капитале. Если бы вы любезно ответили на эти вопросы, я был бы признателен, и мы надеемся, что мы сможем закрыть эту ветку как решено как можно скорее.

<?php 
//Required PHP Files. 
include 'header_account.php'; //Required on all webpages of the Site. 
?> 

<?php 

if (!$conn) 
{ 
    $error = mysqli_connect_error(); 
    $errno = mysqli_connect_errno(); 
    print "$errno: $error\n"; 
    exit(); 
} 

if($_SERVER["REQUEST_METHOD"] == "POST") 
    { 
        //Check whether the file was uploaded or not without any errors. 
        if(!isset($_FILES["id_verification_video_file"]) && 
$_FILES["id_verification_video_file"]["Error"] == 0) 
        { 
            $Errors = Array(); 
            $Errors[] = "Error: " . $_FILES["id_verification_video_file"] 
["ERROR"]; 
            print_r($_FILES); ?><br><?php 
            print_r($_ERRORS); 
            exit(); 
        } 
        else 
        { 
            //Feed Id Verification Video File Upload Directory path. 
            $directory_path = "uploads/videos/id_verifications"; 
            //Make Directory under $user in 
'uploads/videos/id_verifications' Folder if it doesn't exist. 
            if(!is_dir("$directory_path/$user")) //IS THIS LINE CORRECT ?
            { 
                $mode = "0777"; 
                mkdir("$directory_path/$user", $mode, TRUE); //IS THIS 
LINE CORRECT ?
            } 

            //Grab Uploading File details. 
            $Errors = Array(); //SHOULD I KEEP THIS LINE OR NOT ?
            $file_name = $_FILES["id_verification_video_file"]["name"]; 
            $file_tmp = $_FILES["id_verification_video_file"] 
   ["tmp_name"]; 
            $file_type = $_FILES["id_verification_video_file"]["type"]; 
echo "File Type: $file_type<br>"; //Outputs: "". WHY $file_type SHOWS 
BLANK VALUE WHEN UPLOADING VIDEO FILES ? WORKS WITH OTHER FILES, LIKE 
JPEG.
            $file_size = $_FILES["id_verification_video_file"]["size"]; 
            $file_error = $_FILES['id_verification_video_file']['error']; 
echo "File Name: $file_name<br>"; //Outputs: "id_check.mp4"

            //Grab Uploading File Extension details. 
            $file_extension = pathinfo($file_name, PATHINFO_EXTENSION); 
echo "File Extension: $file_extension<br>"; //Outputs: "mp4"
            if(file_exists($directory_path . "$user/" . $file_name)) 
//WHICH LINE IS CORRECT ? THIS ONE OR THE NEXT ONE ?
            //if(file_exists($directory_path . $user . '/' . $file_name)) 
//WHICH LINE IS CORRECT ? THIS ONE OR THE PREVIOUS ONE ?
            { 
                $Errors[] = "Error: You have already uploaded a video 
file to verify your ID!"; 
                exit(); 
            } 
            else 
            { 
                //Feed allowed File Extensions List. 
                $allowed_file_extensions = array("video/mp4"); 

                //Feed allowed File Size. 
                $max_file_size_allowed_in_bytes = 1024*1024*1; //Allowed 
limit: 100MB. 
                $max_file_size_allowed_in_kilobytes = 1024*1; 
                $max_file_size_allowed_in_megabytes = 1; 

                $max_file_size_allowed = 
"$max_file_size_allowed_in_bytes"; 

                //Create a fileinfo respource. 
                $finfo = finfo_open(FILEINFO_MIME_TYPE); 
                //Apply the fileinfo resource and the finfo_file() 
function to the uploading given file. 
                $mime = finfo_file($finfo,$file_name); 
                //Close the fileinfo resource. 
                finfo_close($finfo); echo "Mime: $mime<br>"; //exit; 
//Outputs: video/mp4

            //Verify File Extension. 
            //if(!in_array($file_extension, $allowed_file_extensions)) 
die("Error 1: Select a valid video file format. Select an Mp4 file."); 
            //Verify MIME Type of the File.                 
            if(!in_array($mime, $allowed_file_extensions)) die("Error 2: 
Select a valid video file format. Select an Mp4 file."); 
            elseif(!in_array($file_type, $allowed_file_extensions)) 
die("Error 3: There was a problem uploading your file $file_name! Make 
sure your file is an MP4 video file. You may try again."); //IS THIS LINE 
CORRECT ?
            //Verify File Size. Allowed Max Limit: 1MB. 
            if($file_size>$max_file_size_allowed) die("Error 4: Your 
Video File Size is larger than the allowed limit of: 
$max_file_size_allowed_in_megabytes."); 
            //Move uploaded File to newly created directory on the 
server. 
            if(!move_uploaded_file($file_tmp, 
"$directory_path/$user/$file_name")) die("Error 5: Your file failed to 
upload! Try some other time."); 
            else 
            { 
                move_uploaded_file($file_tmp, 
"$directory_path/$user/$file_name"); //WHY IS NOT THIS LINE OF CODE 
MOVING THE FILE TO DESTINATION ?
                //Notify user their Id Verification Video File was 
uploaded successfully. 
                echo "Your Video File \"$file_name\" has been uploaded 
successfully!"; 
                exit(); 
                }                   
            } 
        } 
    } 
?> 

<form METHOD="POST" ACTION="" enctype="multipart/form-data"> 
<fieldset> 
<p align="left"><h3><?php $site_name ?> ID Video Verification Form</h3> 
</p> 
<div class="form-group"> 
    <p align="left"<label>Video File: </label> 
    <input type="file" name="id_verification_video_file" 
id="id_verification_video_file" value="uploaded 'Id Verification Video 
File.'"></p> 
</div> 
</fieldset> 
<p align="left"><button type="submit" class="btn btn-default" 
name="id_verification_video_file_submit">Submit!</button></p> 
</form> 

</body> 
</html> 

<?php 
include 'footer_account.php'; //Required on all webpages of the Site. 
?> 

Я получаю эхо при попытке загрузить файл mp4: Ошибка 3: при загрузке файла id_check.mp4 возникла проблема! Убедитесь, что ваш файл MP4 видео файл. Вы можете попробовать еще раз.

Должен ли я установить права доступа к папке 0644 из 0777? Мне говорят, что я не должен позволять пользователям выполнять какие-либо исполняемые файлы в папке (загрузчики файлов), и поэтому я должен установить для него только для чтения и записи значение «0644». Мне нужно ваше экспертное мнение по этому поводу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...