Помогни ни да направим Uroci.net по - богат! Добави урок

Написване на клас за File Upload

PHP » PHP
nma   трудност:    видян: 13775



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;
?>



Страници: «1 2 3 4 5 »

Сподели урока:



Коментари (1)

yahoo на 24.02 2007 в 14:28ч.
Когато upload-вам файл в името на който има единична кавичка ' името се отрязва до кавичката. Самата $_FILES['upload']['name'] е отрязана и не мога да и приложа str_replace някакви идеи?

Регистрирайте се, за да добавите коментар


Калдейта Ком ЕООД - © 2003-. Всички права запазени.
Препоръчваме: IT Новини