PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Описание: тип размера и тип файла
Поиск в теме | Версия для печати
Shtorm_sai
Отправлено: 24 Января, 2011 - 23:34:29
Частый гость
Покинул форум
Сообщений всего: 135
Дата рег-ции: Янв. 2011
Откуда: Новосибирск, Россия
Помог: 0 раз(а)
Здрасте. Ребят подскажите пожалуйста как перобразовать байты в килобайты, килобайты в мегабайты и т.д. и опять же как созадть разрешённые типы файлов.
В общем задача. Есть форма загрузки файлов:
CODE (
htmlphp ):
скопировать код в буфер обмена
< form enctype= "multipart/form-data" action= "upload.php" method= "post" >
Отправить этот файл: < input name= "upfile" type= "file" />
< input type= "submit" value= "Загрузить" />
</ form>
и собственно сам скрипт обработчик:
CODE (
htmlphp ):
скопировать код в буфер обмена
<? php
$file_up_dir = "Z:\home\localhost\www\upload\up_files\ " ;
$file_error = $_FILES [ 'upfile' ] [ 'error' ] ;
$file_tmp = $_FILES [ 'upfile' ] [ 'tmp_name' ] ;
$file_name = $_FILES [ 'upfile' ] [ 'name' ] ;
$file_type = $_FILES [ 'upfile' ] [ 'type' ] ;
$file_size = $_FILES [ 'upfile' ] [ 'size' ] ;
$file_max_size = 52428800 ;
if ( $file_size <= $file_max_size )
{
copy ( $file_tmp , $file_up_dir . $file_name ) ; echo "Файл успешно загружен!<br>Имя файла: $file_name <br>Тип файла: $file_type <br>Размер файла: $file_size " ;
}
else {
echo "Файл привышает допустимый размер!<br>$file_error " ;
}
?>
Здесь нужно разрешить определённые типы файлов и размер файла при выводе писать в мегабайтах. Буду рад помощи...
Да и ещё тип файла прописывается например как: audio/mpeg
Я ни чего не придумал кроме как преобразовать его так:
Может есть какие то другие способы?(Отредактировано автором: 24 Января, 2011 - 23:47:43)
Shtorm_sai
Отправлено: 25 Января, 2011 - 00:02:39
Частый гость
Покинул форум
Сообщений всего: 135
Дата рег-ции: Янв. 2011
Откуда: Новосибирск, Россия
Помог: 0 раз(а)
Спасибо.
Не могу только понять как эту функцию прикрутить к своему скрипту.
За советы отдельное спасибо
OverNik
Отправлено: 25 Января, 2011 - 00:37:29
Частый гость
Покинул форум
Сообщений всего: 182
Дата рег-ции: Янв. 2008
Помог: 0 раз(а)
файл
function.php
CODE (
htmlphp ):
скопировать код в буфер обмена
<? PHP
function f_bafsize( $size , $type ) {
//устанавливаем конфигурацию вывода приставок, надеюсь разберетесь
if ( $loc == 0) {
$iec = array ( 'байт' , 'Килобайт' , 'Мегабайт' , 'Гигабайт' , 'Терабайт' , 'Петабайт' , 'Эксабайт' ) ;
}
if ( $loc == 1) {
$iec = array ( 'б' , 'Кб' , 'Мб' , 'Гб' , 'Тб' , 'Пб' , 'Эб' ) ;
}
if ( $loc == 2) {
$iec = array ( 'B' , 'KB' , 'MB' , 'GB' , 'TB' , 'PB' , 'EB' ) ;
}
$i = 0 ;
while ( ( $size / 1024) > 1) {
$size = $size / 1024 ;
$i ++;
}
//Определяем какую приставку надо ставить
$iec = strpos ( $iec , '.' ) ; //Убираем все после плавающей запятой
$echo = $size . ' ' . $iec ; //Формируем вывод
return $echo ;
}
echo f_bafsize( 1024, 1) ; //Выведет 1 Кб
echo f_bafsize( 1024, 0) ; //Выведет 1 Килобайт
echo f_bafsize( 1024, 2) ; //Выведет 1 KB
?>
скрипт обработчик:
PHP:
скопировать код в буфер обмена
<?PHP
$file_up_dir = "Z:\home\localhost\www\upload\up_files\ " ;
$file_error = $_FILES [ 'upfile' ] [ 'error' ] ;
$file_tmp = $_FILES [ 'upfile' ] [ 'tmp_name' ] ;
$file_name = $_FILES [ 'upfile' ] [ 'name' ] ;
$file_type = $_FILES [ 'upfile' ] [ 'type' ] ;
$file_size = $_FILES [ 'upfile' ] [ 'size' ] ;
$file_max_size = 52428800 ;
if ( $file_size <= $file_max_size )
{
copy ( $file_tmp , $file_up_dir . $file_name ) ; include ( "function.php" ) ;
echo "Файл успешно загружен!<br>Имя файла: $file_name <br>Тип файла:
$file_type <br>
Размер файла:" . f_bafsize( $file_size , 1 ) . " кб" ;
}
else {
echo "Файл привышает допустимый размер!<br>$file_error " ;
}
?>
broshurkaplus
Отправлено: 25 Января, 2011 - 19:28:08
Посетитель
Покинул форум
Сообщений всего: 354
Дата рег-ции: Янв. 2011
Откуда: Пружаны Бресткая обл. Беларусь
Помог: 2 раз(а)
я новичок сам долго разбирался но сделал проверку на типы файлов так
CODE (
htmlphp ):
скопировать код в буфер обмена
$file_types = array ( "image/jpeg" => "jpg" , "image/pjpeg" => "jpg" , "image/gif" => "gif" , "image/png" => "png" , ) ; $width = null ;
$img_type = $img_info [ "mime" ] ;
list ( $width , $height , $t , $attr ) = $img_info ; if ( ! $file_types [ $img_type ] ) {
die ( "Просим прощения, но картинка должна быть в jpeg, jpg, gif или png формате. Пожалуйста, попробуйте ещё раз." ) ; }
else
{ $file_suffix = $file_types [ $img_type ] ; }
у меня работает эти типы загружает, а например .txt .doc нет
Shtorm_sai
Отправлено: 26 Января, 2011 - 04:19:04
Частый гость
Покинул форум
Сообщений всего: 135
Дата рег-ции: Янв. 2011
Откуда: Новосибирск, Россия
Помог: 0 раз(а)
Ну я проще сделал пока. В отдельный файл вынес массив такого вида:
CODE (
htmlphp ):
скопировать код в буфер обмена
<? php
'application/x-tar' => 'rar' ,
'application/x-zip-compressed' => 'zip' ,
'video/x-ms-wmv' => 'wmv' ,
'audio/mid' => 'midi' ,
'audio/mpeg' => 'mp3' ,
'audio/x-wav ' => 'wav' ,
'audio/x-ms-wma' => 'wma' ,
'video/avi' => 'avi' ,
'video/x-msvideo' => 'avi' ,
'video/mpeg' => 'mpeg' ,
'video/quicktime' => 'mov' ,
'image/bmp' => 'bmp' ,
'image/gif' => 'gif' ,
'image/jpeg' => 'jpeg' ,
'image/png' => 'png' ,
'application/futuresplash' => 'swf' ,
'application/pdf' => 'pdf' ,
'application/x-msexcel' => 'xls' ,
'application/msword' => 'doc' ,
'text/plain' => 'txt' ,
'application/x-msdownload' => 'exe'
) ;
?>
В upload.php проинклудил файл с массивом и на вывод расширения сделал так.
CODE (
htmlphp ):
скопировать код в буфер обмена
move_uploaded_file($file_tmp, $file_up_dir.$file_name);
echo "Файл успешно загружен!< br> Имя файла: $file_name< br> Тип файла: ".$typefiles[$file_type]."< br> Размер файла: $file_size< br>< br> Ссылка для скачивания: < a href= 'http://localhost/upload/up_files/%20$file_name' > http://localhost/upload/up_files/%20$file_name</ a> ";
Это именно на определение файла. А вот до проверки ещё не допетрил) Сейчас буду думать Нужно функции научиться писать
(Добавление)
broshurkaplus пишет: я новичок сам долго разбирался но сделал проверку на типы файлов так
CODE (
htmlphp ):
скопировать код в буфер обмена
$file_types = array ( "image/jpeg" => "jpg" , "image/pjpeg" => "jpg" , "image/gif" => "gif" , "image/png" => "png" , ) ; $width = null ;
$img_type = $img_info [ "mime" ] ;
list ( $width , $height , $t , $attr ) = $img_info ; if ( ! $file_types [ $img_type ] ) {
die ( "Просим прощения, но картинка должна быть в jpeg, jpg, gif или png формате. Пожалуйста, попробуйте ещё раз." ) ; }
else
{ $file_suffix = $file_types [ $img_type ] ; }
у меня работает эти типы загружает, а например .txt .doc нет
В общем сделал так.
Вытягиваем все ключи из массива typefiles
И сравниваем входящиий тип файла с типом из ключа что в массиве:
Не знаю правильно или нет. Но всё работает)
Volt
Отправлено: 28 Января, 2011 - 11:33:25
Гость
Покинул форум
Сообщений всего: 75
Дата рег-ции: Янв. 2011
Помог: 1 раз(а)
Цитата: Ну я проще сделал пока. В отдельный файл вынес массив такого вида:
CODE (htmlphp):
скопировать код в буфер обмена
<?php
$typefiles = array (
'application/x-tar' => 'rar',
'application/x-zip-compressed' => 'zip',
'video/x-ms-wmv' => 'wmv',
'audio/mid' => 'midi',
'audio/mpeg' => 'mp3',
'audio/x-wav ' => 'wav',
'audio/x-ms-wma' => 'wma',
'video/avi' => 'avi',
'video/x-msvideo' => 'avi',
'video/mpeg' => 'mpeg',
'video/quicktime' => 'mov',
'image/bmp' => 'bmp',
'image/gif' => 'gif',
'image/jpeg' => 'jpeg',
'image/png' => 'png',
'application/futuresplash' => 'swf',
'application/pdf' => 'pdf',
'application/x-msexcel' => 'xls',
'application/msword' => 'doc',
'text/plain' => 'txt',
'application/x-msdownload' => 'exe'
);
?>
парни я а я могу добавить свои типы расширения??например 'application/http' => 'www',?
Поиск в теме | Версия для печати
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
Powered by ExBB FM 1.0 RC1. InvisionExBB