Чтобы загрузить файлы, нам нужно использовать тип = тип файла формы в HTML и ее атрибут enctype. Это то, что мы все должны использовать. Конечно, мы должны использовать библиотеку функций FILE, библиотеку функций строкового типа, библиотеку функций каталога и $_FILES[] среди библиотек функций PHP.
Возможно, каждый сайт может иметь множество ограничений на загрузку файлов. Эти ограничения могут включать тип файла, размер файла, расширение и наличие каталога для загрузки, наличие файла для загрузки, возможность записи каталога, а также читаемость, переименование. загруженные файлы и как скопировать файлы из кеша в нужный вам каталог.
Конечно, нельзя игнорировать предварительную обработку ошибок! Если мы обсудим это дальше, мы также можем включить запись журнала событий для файловых операций.
Ниже мы реализуем эти функции через программу:
Первое — это предустановленное значение переменной, которое включает в себя размер файла, тип расширения файла, тип MIMI и необходимость удаления переменной переключателя
$MAX_SIZE = 2000000;
$FILE_MIMES = массив('изображение/jpeg','изображение/jpg','изображение/gif'
,'image/png','application/msword');
$FILE_EXTS = array('.zip','.jpg','.png','.gif');
$DELETABLE = true
; установите переменные доступа к браузеру и переменные доступа к каталогу:
$site_name = $_SERVER['HTTP_HOST'];
$url_dir = http://.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF' ]);
$url_this = http://.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF' ];
$upload_dir = files/;
$upload_url = $url_dir./files/;
$message =;
Создайте каталог для загрузки и соответствующим образом измените разрешения:
if (!is_dir(files)) {
если (!mkdir($upload_dir))
die (каталог upload_files не существует, создание не удалось);
если (!chmod($upload_dir,0755))
умереть (сменить разрешение на 755 не удалось.);
}
Обработка запросов пользователей:
если ($_REQUEST[del] && $DELETABLE) {
$resource = fopen(log.txt,a);
fwrite($resource,date(Ymd h:i:s).DELETE - $_SERVER[REMOTE_ADDR].$_REQUEST[del]\n);
fclose($resource);
if (strpos($_REQUEST[del],/.)>0); //возможен взлом;
else if (strpos($_REQUEST[del],files/) === false); //возможен взлом);
иначе if (substr($_REQUEST[del],0,6)==files/) {
отсоединить ($_REQUEST [дель]);
print <script>window.location.href='$url_this?message=удалено успешно'</script>;
}
}
иначе, если ($_FILES['userfile']) {
$resource = fopen(log.txt,a);
fwrite($resource,date(Ymd h:i:s).UPLOAD - $_SERVER[REMOTE_ADDR]
.$_FILES['userfile']['имя'].
.$_FILES['userfile']['type'].\n);
fclose($resource)
$file_type = $_FILES['userfile']['type'];
$file_name = $_FILES['userfile']['name'];
$file_ext = strtolower(substr($file_name,strrpos($file_name,.)));
//Проверка размера файла:
if ( $_FILES['userfile']['size'] > $MAX_SIZE)
$message = Размер файла превышает 2 МБ.;
//Проверка типа/расширения файла
иначе, если (!in_array($file_type, $FILE_MIMES)
&& !in_array($file_ext, $FILE_EXTS) )
$message = Извините, $file_name($file_type) не может быть загружен.;
еще
$message = do_upload($upload_dir, $upload_url);
print <script>window.location.href='$url_this?message=$message'</script>;
}
иначе если (!$_FILES['userfile']);
еще
$message = Указан неверный файл.;
Перечислите загруженные нами файлы:
$handle=opendir($upload_dir);
$список файлов = ;
while ($file = readdir($handle)) {
if(!is_dir($file) && !is_link($file)) {
$filelist .= <a href='$upload_dir$file'>.$file.</a>;
если ($УДАЛИТЬ)
$filelist .= <a href='?del=$upload_dir$file' title='delete'>x</a>;
$filelist .= <sub><small><small><font color=grey> .date(dm H:i, filemtime($upload_dir.$file))
.</font></small></small></sub>;
$filelist .=<br>;
}
}
function do_upload($upload_dir, $upload_url) {
$temp_name = $_FILES['userfile']['tmp_name'];
$file_name = $_FILES['userfile']['name'];
$file_name = str_replace( \\,,$file_name );
$file_name = str_replace(',,$file_name);
$file_path = $upload_dir.$file_name
//Проверка имени файла
;
если ($имя_файла ==) {
$message = Указано неверное имя файла;
вернуть $сообщение;
}
$result = move_uploaded_file($temp_name, $file_path);
если (!chmod($file_path,0777))
$message = изменить разрешение на 777 не удалось.;
еще
$message = ($result)?$file_name успешно загружено:
Что-то не так с загрузкой файла.;
вернуть $сообщение;
}
?>
<центр
>
<цвет шрифта=красный><?=$_REQUEST[сообщение]?></font>
<бр>
<имя формы=идентификатор загрузки=загрузка ENCTYPE=многочастный/метод данных формы=сообщение>
Загрузить файл <тип ввода=идентификатор файла=имя пользовательского файла=пользовательский файл>
<тип ввода=имя отправки=значение загрузки=Загрузить>
</form>
<br><b>Мои файлы</b>
<ширина часа=70%>
<?=$список_файлов?>
<ширина часа=70%>
<маленький><sup>Разработано
<a style=text-decoration:none href=http://tech.citypost.ca>CityPost.ca</a>
</суп></маленький>
</центр>