Когда поставлена задача передачи серверу файлов для их последующего прочтения, следует воспользоваться незаменимой функцией: move_uploaded_file().
Здесь показан пример работы этой функции.
Задача: Надо положить на сервер картинку в формате .jpeg, чтобы в дальнейшем создать галерею. Картинки должны лежать на сервере, чтобы их можно было прочитать и вывести затем в броузер.
Для начала надо создать .html форму:
<form ENCTYPE='multipart/form-data' action='' method='post'>
<input TYPE='hidden' name='MAX_FILE_SIZE' value='450000'>
<br>Вложить файл, размер <b>не более 45000 байт</b>
<br><input class='dats' type='file' name='file_name' size='20'>
<input type='submit' value='добавить'>
</form>
Из этой формы через массив $_FILES мы получим :
имя файла $_FILES['file_name']['name']
размер файла $_FILES['file_name']['size']
тип файла $_FILES['file_name']['type']
Кроме этого, форма ничего не отправит на сервер, если размер файла будет превышать 450000 байт, которые мы прописали в форме строкой: name='MAX_FILE_SIZE' value='450000'
Скрипт будет такой:
<?php
// база картинок
$base_images = 'base_img.dat';
// если нет файла с базой, то его создаем
if (! @file_exists ($base_images)){ @touch ($base_images); }
// если хочет удалить файл
if (! empty ($_GET['del'])){
$content = '';
$name_f = str_replace ("\\","/", getcwd ())."/".$_GET['del'];
if (@ file_exists ($name_f)) { @unlink ($name_f); }
$general = file ( $base_images );
$lines = count ($general);
for ( $i = 0; $i < $lines; $i++ ){
list ($name,$size)= explode ("::", $general[$i]);
if ($_GET['del']==$name){ continue; }
$content .= $general[$i];
}
$fp = fopen ( $base_images, "w" );
fwrite ( $fp, $content );
fclose ( $fp );
}
// печатаем форму посылки
print"
<form ENCTYPE='multipart/form-data' action='' method='post'>
<input TYPE='hidden' name='MAX_FILE_SIZE' value='450000'>
Добавьте файл с расширением <b>.jpeg</b>
<br>Вложить файл, размер <b>не более 450000 байт</b>
<br><input type='file' name='file_name' size='20'>
<input type='submit' value='добавить'>
</form>
";
// функция основная
function _Post_Files(){
if ( substr ( phpversion (),0,1)==4){
if ( ! empty ($HTTP_POST_FILES["file_name"]["name"])){ return $HTTP_POST_FILES; }
return false;
}
if ( ! empty ($_FILES["file_name"]["name"])){ return $_FILES; }
return false;
}
// если сказали закачиваем файл
if (_Post_Files()){ $array_post=_Post_Files(); add_images($array_post); }
// фукция, которая добавляет картинку
function add_images($arr){
global $base_images;
$fname = str_replace ("\\","/", getcwd ())."/".$arr["file_name"]["name"];
if (move_uploaded_file($arr["file_name"]["tmp_name"],$fname)){
$name_file = $arr["file_name"]["name"];
$size_file = $arr["file_name"]["size"];
}
if ( ! file_exists ($fname)){return print "\n<br><Error: Файл $fname не найден <br>\n";}
$content = '';
$general = file ( $base_images );
$lines = count ($general);
for ( $i = 0; $i < $lines; $i++ ){ $content .= $general[$i]; }
$content .= "$name_file::$size_file::\n";
$fp = fopen ( $base_images, "w" );
fwrite ( $fp, $content );
fclose ( $fp );
return print "\n<br><b>Файл: $name_file </b>($size_file байт) успешно загружен \n";
}
// фукция, которая печатает закачанные картинки
function print_images($path){
$content = '<table>';
$general = file ( $path );
$lines = count ($general);
$a=0;
for ($i = $lines-1; $i >= 0; $i--) {
if ( empty ($general[$i])) continue;
$a++;
list ($name,$size)= explode ("::", $general[$i]);
$name_f = str_replace ("\\","/", getcwd ())."/".$name;
if (! @file_exists ($name_f)) continue;
if ($a == 1) { $content .= "<tr>"; }
$content .= "<td valign='top' align='center'><a href='?del=".$name."'>".$name."</a><br><a href='".$name."' target='_blank'><img src='".$name."' alt='".$size." bt' border='0' width='150'></a></td>\n";
if ($a > 3) { $content .= "</tr>"; $a = 0; }
}
return $content."</tr></table>";
}
// напечатаем картинки, что закачаны
print print_images($base_images);
?>