Section #1
Първата секция от
тази функция, дефинира променливите, които ще бъдат използвани от
функцията.
$file_name = Истинското име на файла декларирано от
потребителя при викането на класа.
$extension = Разширението, взето от името
на файла. Функцията strrchr() ще открие последния срещан character и ще чете от
тази точка нататък.
$ext_array = масива деклариран от потребителя при
викането на класа.
$ext_count = Броят на елементите във масив на
разширенията.
<?php
//SECTION #2
if (!$file_name) {
return
false;
} else {
if (!$ext_array) {
return true;
} else {
foreach
($ext_array as $value) {
$first_char = substr($value,0,1);
if ($first_char
<> ".") {
$extensions[] = ".".strtolower($value);
} else
{
$extensions[] =
strtolower($value);
}
}
?>
Section #2
Тази
секция от функцията стартира процеса на потвърждаване на файловото разширение.
Първо проверяваме дали $file_name съществува, и ако е продължаваме, иначе
затваряме функцията и връща резултат false, защото без име на файла, няма какво
да изследваме. След това проверяваме дали $ext_array съществува. Ако не, се
предполага, че сте възприели всички файлови разширения. След това стартираме
нашият първи foreach() цикъл. Този цикъл, ще подсигури, че файловото разширение
започва а малки букви, а ако не е ще бъде променено за да отразява това
изискване и ще бъде изпратено на друг масив кръстен
$extensions.
<?php
//SECTION #3
foreach ($extensions as
$value) {
if ($value == $extension) {
$valid_extension =
"TRUE";
}}
?>
Section #3
Сега стартираме още един
цикъл. Използуваме ново дефинирания и организиран $extensions масив, като фокус
на цикъла. В цикъла if е твърдението, използвано да провери дали разширението е
валидно. Основно if твърдението казва, че ако файловото разширение отговаря на
някоя от стойностите екстрактната от допустимите разширения, то $valid_extension
променливата приема стойност true. Това е ядрото на нашия цикъл, с което се
открива дали е допустим нашия файл или не е.
<?php
//SECTION
#4
if ($valid_extension) {
return true;
} else {
return
false;
}}}}
?>
Section #4
Последната секция от
функцията е отрязък от кода, четящ дали $valid_extension променливата
съществува. Ако е, функцията връща true и файлът е добре, иначе функцията връща
false. Откриваме (3) затварящи скоби в края на кода, (2) за горните if-elseif
твърдения и последната за затваряне на
функцията.
---------------------------
Function #2 (Validation of
File Size)
<?php
function validate_size()
{
$temp_file_name = trim($this->temp_file_name);
$max_file_size =
trim($this->max_file_size);
if (!$temp_file_name) {
$size =
filesize($temp_file_name);
if ($size > $max_file_size) {
return
false;
} else {
return true;
}
} else {
return
false;
}
}
?>
Функцията е значително по-малка от
предишната и ще преминем през нея изцяло. Първите (2) реда дефинират
$temp_file_name и $max_file_size, които трябва да са зададени от крайния
потребител. Следва проверка. Проверяваме дали $temp_file_name съществува, и ако
не, функцията завършва и връща false. Ако $temp_file_name съществува, вземаме
размера на качения файл и го сравняваме с допустимия размер - $max_file_size.
Ако файлът е по-голям от позволеното функцията връща "false", иначе връща "true"
и размера на файла.
--------------------------
Function #3 (Дали
този файл вече съществува?)
<?php
function existing_file()
{
$file_name = trim($this->file_name);
$upload_dir =
$this->get_upload_directory();
if ($upload_dir == "ERROR") {
return
true;
} else {
$file = $upload_dir . $file_name;
if
(file_exists($file)) {
return true;
} else {
return
false;
}
}
}
?>
Тази функция ще провери, дали файла за
upload, не съществува вече на сървъра. Тази функция е добавена при заявка и няма
много да се спираме на нея. По същество, би трябвало да имате някакъв вид
преименуваща система, която да използвате, преди и да сте помислили за upload на
сървъра. Примерно, когато допускаме потребител да upload-ва на сървъра, там
някъде трябва да има запис в база данни, относно този файл. Така че може да
вземем id номера от database и да преименуваме файла, предоставен от потребителя
на id номера. (т.е. потребителя предоставя hello_world.php и той се променя на
452.php, защото това е 452-ят запис в DB) Това е много добра система за
именуване, защото е изключително лесно да триете и подменяте записите. Тук няма
преименуваща функция, включена в този class, но Вие лесно бихте могли да
добавите.
Първите (2) реда от тази функция, декларират $file_name и
$upload_dir. След това стартираме if-elseif проверка. Първо проверяваме if :
имаме ли валидна директория за upload. Ако нямаме, се извършва exit на функцията
и връщане на true. Знам, че изглежда наопаки да връщаме true, когато файла
съществува или има грешка, но за тази функция върши работа. Името на функцията е
'exisiting_file()', така че ако върне true, значи казва че file exists и не би
трябвало да се ъплоудва. Ако upload directory е валидна, продължаваме към
следващата секция на if-elseif проверка.
Сега описваме пътя до нашия файл
с the file name intact(цялостен,цял), т.е. $file = $upload_dir . $file_name.
След това имаме малка част код, която използува PHP функцията file_exists(). Ако
file exists, връщаме true, иначе връщаме false и файла е готов да бъде
ъплоудван.
-------------------------------
Function #4 (Екстракт на
размера на файла)
<?php
function get_file_size()
{
//SECTION #1
$temp_file_name = trim($this->temp_file_name);
$kb =
1024;
$mb = 1024 * $kb;
$gb = 1024 * $mb;
$tb = 1024 *
$gb;
//SECTION #2
if ($temp_file_name) {
$size =
filesize($temp_file_name);
if ($size < $kb) {
$file_size = "$size
Bytes";
}
elseif ($size < $mb) {
$final =
round($size/$kb,2);
$file_size = "$final KB";
}
elseif ($size < $gb)
{
$final = round($size/$mb,2);
$file_size = "$final
MB";
}
elseif($size < $tb) {
$final =
round($size/$gb,2);
$file_size = "$final GB";
} else {
$final =
round($size/$tb,2);
$file_size = "$final TB";
}
} else {
$file_size
= "ERROR: NO FILE PASSED TO get_file_size()";
}
return
$file_size;
}
?>
Тази функция ще изследва файла, за да
изведе размерите на файла. Кода е разбит на (2) секции за по-лесно
разбиране.
<?php
//SECTION #1
$temp_file_name =
trim($this->temp_file_name);
$kb = 1024;
$mb = 1024 * $kb;
$gb =
1024 * $mb;
$tb = 1024 * $gb;
?>