Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как ввести ограничение по формату и размеру? 
:(
    Опции темы
terrmann
Дата 25.10.2006, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 25.10.2006

Репутация: нет
Всего: нет



Вот я написал код для того, чтобы загружать на сайт файлы прямо туда, где сам скрипт находится..
Код

<?
if ($_POST['upload']=='1') {
  $file=$_FILES['file'];
  move_uploaded_file($file['tmp_name'], $file['name']);
  }
?>
<html>
<head>
<title>File upload</title>
</head>
<body>
<form method="post" enctype="multipart/form-data">
<input type="hidden" name="upload" value="1">
<input type="file" name="file">
<input type="submit" value="Upload">
</form>
</body>
</html>


Но я не знаю как сделать так, чтобы были ограничения по формату (нужно только rar и txt) и по  размеру (2 Мб, допустим)... =\
Объясните, пожалуйста.

Заранее благодарен!

С уважением,
Иван.
PM MAIL   Вверх
Piphon
Дата 25.10.2006, 22:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 30.3.2004
Где: Екатеринбург

Репутация: 2
Всего: 2



На клиенте:

Код

<input type="hidden" name="MAX_FILE_SIZE" value="2028">


На сервере:

$_FILES['имя_файла']['name']        - Оригинальное имя файла на клиентской машине.
$_FILES['имя_файла']['type']          - mime-тип файла, если браузер предоставил эту информацию. Пример: "image/gif".
$_FILES['имя_файла']['size']           - Размер загруженного файла в байтах.
$_FILES['имя_файла']['tmp_name'] - Временное имя файла, под которым загруженный файл был сохранён на сервере.


В твоем случае имя_файла file, проверяй значения type и size в скрипте.
--------------------
Non Progredi Est Regredi...
PM MAIL ICQ   Вверх
SelenIT
Дата 26.10.2006, 00:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 32
Всего: 401



Предельный размер upload-а ограничен в конфигурации php параметром upload_max_filesize. По умолчанию это как раз 2М smile


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
клоп
Дата 26.10.2006, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 28.2.2006
Где: г. Череповец

Репутация: нет
Всего: нет



По размеру файла (пример для 200Kb):
Код

if($_FILES["filename"]["size"]>1024*200)
{ echo"<font color=#ee0000>Размер загружаемого файла не должен превышать 200 Кб! </font>"; exit;}


По формату:

Код

$filename = $_FILES['filename']['name'];
$filename = str_replace(" ", "_", $filename);
$file_name_arr = explode(".",$filename);
$type = end($file_name_arr);
$extensions = array("txt","csv");// перечисляем что можно грузить

if($filename == ""){ echo "Сохраните файл и загрузите его на сервер "; }
elseif(!(in_array($type, $extensions) or in_array(strtolower($type), $extensions)) ) { echo"<font color=#ee0000>Такой тип файла не подходит !!! </font>"; exit;}

--------------------
Всякая чепуха посещает голову, когда она пуста ....
PM MAIL WWW   Вверх
Piphon
Дата 26.10.2006, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 30.3.2004
Где: Екатеринбург

Репутация: 2
Всего: 2



Ignat, а лучше еще и по mime(['type']).

P.S. Сори за ошибку, насчет 2028 байт ошибся.
--------------------
Non Progredi Est Regredi...
PM MAIL ICQ   Вверх
terrmann
Дата 26.10.2006, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 25.10.2006

Репутация: нет
Всего: нет



клоп, гм.. значит какой будет у меня текст будет ? =\
Так?

Код

<?
if ($_POST['upload']=='1') {
  $file=$_FILES['file'];
  move_uploaded_file($file['tmp_name'], $file['name']);
  }

if($_FILES["filename"]["size"]>1024*200)
{ echo"<font color=#ee0000>Размер загружаемого файла не должен превышать 200 Кб! </font>"; exit;}

$filename = $_FILES['filename']['name'];
$filename = str_replace(" ", "_", $filename);
$file_name_arr = explode(".",$filename);
$type = end($file_name_arr);
$extensions = array("txt","csv");// перечисляем что можно грузить
if($filename == ""){ echo "Сохраните файл и загрузите его на сервер "; }
elseif(!(in_array($type, $extensions) or in_array(strtolower($type), $extensions)) ) { echo"<font color=#ee0000>Такой тип файла не подходит !!! </font>"; exit;}
?>
<html>
<head>
<title>File upload</title>
</head>
<body>
<form method="post" enctype="multipart/form-data">
<input type="hidden" name="upload" value="1">
<input type="file" name="file">
<input type="submit" value="Upload">
</form>
</body>
</html>

PM MAIL   Вверх
terrmann
Дата 28.10.2006, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 25.10.2006

Репутация: нет
Всего: нет



Ап... smile
Что то не получается у меня то, что мне написали.. одни ошибки.. smile
PM MAIL   Вверх
SelenIT
Дата 28.10.2006, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 32
Всего: 401



Очевидно, что нужно сначала делать проверки, и только в случае удачи закачивать файл. В простейшем виде:
Код

<?
$formats = array('txt', 'csv');
$max_size = 200;
$error = '';

if (!empty($_FILES['file'])) {
  $file=$_FILES['file'];
  if (!preg_match('/\.('.join('|', $formats).')$/i', $file['name'])) {
    $error = 'Неверный формат файла! Нужен '.join(' либо ', $formats).'!';
  }
  elseif ($file["size"]>1024*$max_size) {
    $error = 'Размер загружаемого файла не должен превышать '.$max_size.' Кб!';
  }
  else move_uploaded_file($file['tmp_name'], $file['name']);
}
?>
<html>
<head>
<title>File upload</title>
</head>
<body>
<? if ($error) { ?>
<p><font color=#ee0000><?=$error ?></font></p>
<? } ?>
<form method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="Upload">
</form>
</body>
</html>


Это сообщение отредактировал(а) SelenIT - 28.10.2006, 23:45


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
клоп
Дата 28.10.2006, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 28.2.2006
Где: г. Череповец

Репутация: нет
Всего: нет



Цитата(terrmann @ 26.10.2006,  16:34)
клоп, гм.. значит какой будет у меня текст будет ? =\
Так?

terrmann  те проверки, что я написал рабочие.  Поверь....

После проверки по идее у тебя должно идти:
Код

else{
copy($_FILES["filename"]["tmp_name"],"download/".$_FILES["filename"]["name"]);

где download/ папка куда все грузится

Это сообщение отредактировал(а) клоп - 28.10.2006, 20:44
--------------------
Всякая чепуха посещает голову, когда она пуста ....
PM MAIL WWW   Вверх
SelenIT
Дата 28.10.2006, 23:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 32
Всего: 401



клоп, все-таки move_uploaded_file тут больше к месту, copy немножко для другого предназначен и при некоторых настройках хостинга может не сработать.


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
клоп
Дата 29.10.2006, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 28.2.2006
Где: г. Череповец

Репутация: нет
Всего: нет



Цитата(SelenIT @ 28.10.2006,  23:50)
клоп, все-таки move_uploaded_file тут больше к месту, copy немножко для другого предназначен и при некоторых настройках хостинга может не сработать.

Согласен
--------------------
Всякая чепуха посещает голову, когда она пуста ....
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0518 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.