<MyRusakov.ru />

Профессия Web-разработчик

Профессия Web-разработчик

Этот комплект за 8 месяцев превратит Вас в Web-разработчика с нуля. Учиться достаточно 1 час в день.

Начнёте Вы с HTML, CSS и вёрстки сайтов. Потом перейдёте к программированию и JavaScript. Затем изучите PHP, MySQL, SQL, Python. Изучите Web-фреймворки Laravel и Django. Создадите 5 своих сайтов для портфолио.

Комплект содержит:

- 540 видеоуроков

- 110 часов видео

- 1205 заданий для закрепления материала из уроков

- 5 финальных тестов

- 7 сертификатов

- 12 Бонусных курсов

Подробнее
Подписка

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

YouTube Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Какая тема Вас интересует больше?

Форум сайта MyRusakov.ru

Загрузка аватарки
20.11.2013 11:29:01 Загрузка аватарки Сообщение #1
LLIMATKO

LLIMATKO

Эксперт

Эксперт

Дата регистрации:
12.02.2013 15:31:03

Сообщений: 129

Делаю загрузку аватарок на сайт. Делаю проверки на имя, разширение и размер. У самого денвера как я понял стоит ограничение 8 мб.

Начинаю проверять - все отлично , но стоит мне к примеру выбрать файл с размером 140 метров( я выбрал видеофайл) он тупит и просто переходит на страницу обработчика(functions.php). Передаю все по POST - он пустой.

Смысл басни такова - хочу чтобы он попадал на проверку размера и разрешения, а не пустую страницу выдавал

как реализовать?
Профиль
20.11.2013 12:07:15 Загрузка аватарки Сообщение #2
tikkiwiki

tikkiwiki

Модератор

Модератор

Дата регистрации:
15.11.2013 15:36:59

Сообщений: 194

Здравствуйте LLIMATKO. Чтобы реализовать загрузку видео большого объема (>100mb) , необходимо прежде всего правильно сконфигурировать настройки php в php.ini:

php_value upload_max_filesize 500M
php_value post_max_size 500M
php_value max_execution_time 1000
php_value max_input_time 1000


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

Так же, если у Вас Apache, потребуется установить 64-bit Apache и установить в параметре LimitRequestBody значение ноль.

LimitRequestBody = 0

То есть отсутствие лимита.

Если у Вас сервер Nginix, добавьте такой вот блок кода в nginx.conf в блок http :

{ client_max_body_size 500m; }

Это должно Вам помочь.
Профиль
20.11.2013 12:51:12 Загрузка аватарки Сообщение #3
LLIMATKO

LLIMATKO

Эксперт

Эксперт

Дата регистрации:
12.02.2013 15:31:03

Сообщений: 129

я в итоге хочу чтобы выводилась ошибка, я вас понял и делал именно так, но если сам пользователь выберет файл, который выше лимита, то он попадает в обработчик, а должна быть ошибка. Это возможной реализовать? без увеличения этих 4х параметров
Профиль
20.11.2013 13:00:26 Загрузка аватарки Сообщение #4
tikkiwiki

tikkiwiki

Модератор

Модератор

Дата регистрации:
15.11.2013 15:36:59

Сообщений: 194

Конечно возможно, напишите условие, которое будет проверять какого размер файл и если больше допустимого, будет выдавать ошибку.
Профиль
20.11.2013 13:04:42 Загрузка аватарки Сообщение #5
LLIMATKO

LLIMATKO

Эксперт

Эксперт

Дата регистрации:
12.02.2013 15:31:03

Сообщений: 129

вы не поняли.

Условие стоит на размер - ошибку выдает (условие 100 метров).
В денвере я поставил ограничение к примеру 200 метров.
выбираю файл размер 101 метр - выдает ошибку, а если , к примеру. пользователь нечаенно выбрал файл с очень большим размером - к примеру фильм, бывает так тыкнул не туда, то он ошибку не выдает, т.к. у денвера стоит ограничение 200 метров, а посылает пользователя в обработчик. который пустой. Пользователь скажет, что сайт фигня и уйдет.
А хочется чтобы и в этом случае выдал ошибку
Профиль
20.11.2013 13:20:49 Загрузка аватарки Сообщение #6
tikkiwiki

tikkiwiki

Модератор

Модератор

Дата регистрации:
15.11.2013 15:36:59

Сообщений: 194

Поставьте тогда нужное ограничение в Denwer'e. Но учтите, что на хостинге, у Вас не будет Denwer'а. Так же, можно сделать дополнительное условие, которое будет проверять расширение файла, поставить ограничение допустим только на загрузку картинок в формате .jpg,jpeg,gif,bmp,png и т.д
Профиль
20.11.2013 15:23:49 Загрузка аватарки Сообщение #7
LLIMATKO

LLIMATKO

Эксперт

Эксперт

Дата регистрации:
12.02.2013 15:31:03

Сообщений: 129

поставил я ограничение 1гб, а человек нечаенно или умышленно выбрал место изображения фимльм с размером в 4гб и опять двадцать пять. Шанс всегда остается, вот и хтелось бы это обойти
Профиль
20.11.2013 15:29:14 Загрузка аватарки Сообщение #8
tikkiwiki

tikkiwiki

Модератор

Модератор

Дата регистрации:
15.11.2013 15:36:59

Сообщений: 194

При загрузке файла в массиве $_FILES возвращается и размер файла и тип загружаемого файла. Так что достаточно задать переменную-массив с предполагаемыми форматами для загрузки и переменную с максимальным размером и проверять на соответствие этим значениям.

Например:

$types = array('image/gif', 'image/png', 'image/jpeg', 'image/pjpeg');
if (!in_array($_FILES['file']['type'], $types)){
echo 'Недопустимый тип файла. Допустимо загружать только изображения: *.gif, *.png, *.jpg';
}
Аналогично с размером.
Профиль
21.11.2013 08:15:06 Загрузка аватарки Сообщение #9
LLIMATKO

LLIMATKO

Эксперт

Эксперт

Дата регистрации:
12.02.2013 15:31:03

Сообщений: 129

а вот проверьте сами свою методику, у меня именно так и стоит на данный момент. поставьтее в денвере к примере 8 мб и загрузите файл с размером 1гб. ошибку он не выдаст
Профиль
13.12.2013 20:35:32 Загрузка аватарки Сообщение #10
tanysha86

tanysha86

Новичок

Новичок

Дата регистрации:
15.10.2013 23:32:05

Сообщений: 4

Добрый день Михаил!
Пожалуста ответьте на такой вопрос:
хочу сделать гостевую книгу с возможностью загрузки аватарки.
В файле index подключаюсь к классу Upload, проверяю, если подключение есть
запускаю на выполнение ф-цию uploadFile($file) класса Upload (для назначения имени и загрузки аватарки), по примеру вашего видео на блоге myrusakov.
А дальше пытаюсь через return вернуть название аватарки файлу index, чтобы в дальнейшем его использовать.
А теперь вопрос почему return не возвращает index - $name_avatar;
Вот пример куска файла index

if ($_POST["reg"]){
require_once "lib/upload_avatar.php";
$upload_avatar=new Upload_avatar();
$avatar_user=$upload_avatar->uploadFile($_FILES["avatar"]);
echo $name_avatar;
if ($avatar_user) {
$setavatar=$user->setAvatar($login, $name_avatar);
if ($avatar_user) { echo "</br>Аватар успешно загружен</br>".$name_avatar;
}
else echo "</br>ОШИБКА при загрузке аватара1</br>";
}
else echo "</br>ОШИБКА при загрузке аватара2</br>";

и файла с классом Upload

public function uploadFile($file) {
if (!$this->isSecurity($file)) return false;
$name_avatar=md5(microtime()).".".substr($file["type"], strlen("image/");
$uploadfile=$this->dir."/".$name_avatar;
if (move_uploaded_file($file["tmp_name"], $uploadfile)) {
//$this->setAvatar($login, $name_avatar);
//echo "</br>Аватар успешно загружен в папку</br>".$name_avatar."ура";
return $name_avatar;
}
else return false;
}
Профиль