С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/30: Рейтинг темы: голосов - 30, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 11.01.2012
Сообщений: 143

Как сделать такую форму загрузки картинок

28.02.2012, 00:51. Показов 6129. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Мне нужна такая форма загрузки картинок, которая:

1. Позволяет загружать изображения только определённого разрешения (64х22)

2. Проверяет формат (если png, то загружало, а если (к примеру) jpg, то чтобы писало, что данный тип не поддерживается)

3. Не использует БД (в данном случае это не нужно)

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


А дальше я разберусь сам. Форма будет встроена в сайт и видна только зарегистрированным пользователям.

Как это должно работать:
1. Пользователь заходит на мой сайт
2. Авторизовывается с помощью своего логина и пароля
3. У него в профиле появляется форма загрузки изображения
4. Он загружает изображение
5. Это изображение переименовывается в соответствии с логином пользователя, под которым он авторизовался на сайте

Например, у него на компьютере картинка 29324sfhj89.png. Его логин, допустим, vasya. Он заливает картинку через форму загрузки, она загружается и переименовывается в vasya.png.

Встроить в сайт я смогу сам, мне главное скрипт.


Есть вопросы? Задавайте.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.02.2012, 00:51
Ответы с готовыми решениями:

как сделать такую же форму?

как сделать такую форму?
как сделать форму как на скрине?

Как сделать такую форму?
Как сделать такую форму? Картинки будут ниже

17
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
28.02.2012, 21:58
вот она http://irbis-team.com/15/13/2 , единственно она не меняет название файла как ты хочешь, ну это просто - отделяешь имя загружаемого файла от его расширения (этим занимается ф-я basename) и вместо нее подставляешь чо хочешь, в твоем случае те нужно передать в ф-ю еще один параметр (login) и его подставлять вместо имени файла
0
0 / 0 / 0
Регистрация: 11.01.2012
Сообщений: 143
29.02.2012, 17:03  [ТС]
Цитата Сообщение от Love_and_Peace Посмотреть сообщение
ну это просто - отделяешь имя загружаемого файла от его расширения (этим занимается ф-я basename) и вместо нее подставляешь чо хочешь
Можно поподробнее?
0
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
29.02.2012, 20:19
Цитата Сообщение от HardSEO Посмотреть сообщение
Можно поподробнее?
куда еще подробней. вот такая там ф-я
PHP
1
function uploadHandle($max_file_size = 100, $valid_extensions = array(), $upload_dir = '.')
Цитата Сообщение от Love_and_Peace Посмотреть сообщение
в твоем случае те нужно передать в ф-ю еще один параметр
это означает, что надо еще 1 параметр добавить в ф-ю, т.е., так (назовем параметр - $login)
PHP
1
function uploadHandle($max_file_size = 100, $valid_extensions = array(), $upload_dir = '.', $login = '')
Теперь нам надо подставить $login вместо реального имени файла (реальное имя находится здесь $_FILES['имя поля']['name'], тока нам надо отделить расшрение у $_FILES['имя поля']['name']).

Там есть такая строка
PHP
1
2
// проверяем расширение файла  
$file_extension = pathinfo($_FILES['userfile']['name'], PATHINFO_EXTENSION);
т.е., мы получили расширение, теперь нужно имя файла подставить из $login
PHP
1
2
3
4
5
6
// Если параметр $login передаем (т.е., если не пустой), то подставляем его
if ($login != '')
   $filename = $login . "$file_extension";
// иначе оставляем реальное имя
else 
   $filename = basename($_FILES['userfile']['name'], ".$file_extension");
И теперь этот $filename подставим вместо $_FILES['userfile']['name'] в этой строке
PHP
1
$destination = $upload_dir .'/' . $_FILES['userfile']['name'];
Т.е., так
PHP
1
$destination = $upload_dir .'/' . $filename;
1
0 / 0 / 0
Регистрация: 11.01.2012
Сообщений: 143
01.03.2012, 00:41  [ТС]
А как сделать проверку на разрешение файла? Т.е., чтобы он проверял: если размер 64x32 - успешно загружало, если иное разрешение - то чтоб не загружало вообще.

Вы с движком DLE работали?
0
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
01.03.2012, 01:30
Цитата Сообщение от HardSEO Посмотреть сообщение
как сделать проверку на разрешение файла? Т.е., чтобы он проверял: если размер 64x32 - успешно загружало, если иное разрешение - то чтоб не загружало вообще.
В этом нам поможет ф-я getimagesize, она возвращает массив первый элемент которго - ширина, второй - высота.
Буду показывать на примере все той же ф-ии
Создадим внутр ф-ии 2 переменные - высоту и ширину
PHP
1
$width = 64; $height = 32;
Теперь пропустим $_FILES['userfile']['name'] через ф-ю getimagesize и проверим ее стороны
PHP
1
$size = getimagesize($_FILES['userfile']['name']);
И вот после этого
PHP
1
2
3
// проверяем размер файла  
if ($_FILES['userfile']['size'] < $max_file_size)  
{
Поставим проверку на стороны картинки
PHP
1
2
3
4
5
6
7
// Если стороны нам подходят, то разрешаем дальнейшие действия
if ($size[0] <= $width || $size[1] <= 32)
{
    // тут уже переименовывание файла и загрузка. См. саму ф-ю
}
// Иначе выводим ошибку
else $error .= 'Ширина должна быть не более 64px, а высота - 32px';
Добавлено через 44 секунды
Цитата Сообщение от HardSEO Посмотреть сообщение
Вы с движком DLE работали?
нет с CMS-ками дело не имел, тут я вам не помощник
0
0 / 0 / 0
Регистрация: 11.01.2012
Сообщений: 143
01.03.2012, 13:05  [ТС]
Немного недопонял. Можно скрипт с уже вставленными функциями?
0
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
01.03.2012, 14:25
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
    function uploadHandle($max_file_size = 100, $valid_extensions = array(), $upload_dir = '.', $login = '')  
    {  
        $width = 64; $height = 32;
        $error = null;  
        $info  = null;  
        $max_file_size *= 1024;  
 
        if ($_FILES['userfile']['error'] === UPLOAD_ERR_OK)  
        {  
            // проверяем расширение файла  
            $file_extension = pathinfo($_FILES['userfile']['name'], PATHINFO_EXTENSION);  
            if (in_array($file_extension, $valid_extensions))  
            {  
                // проверяем размер файла  
                if ($_FILES['userfile']['size'] < $max_file_size)  
                {  
                   $size = getimagesize($_FILES['userfile']['name']);
 
                   // Если стороны нам подходят, то разрешаем дальнейшие действия
                  if ($size[0] <= $width || $size[1] <= 32)
                  {
 
                     // Если параметр $login передаем (т.е., если не пустой), то подставляем его
                     if ($login != '')
                        $filename = $login . "$file_extension";
                     // иначе оставляем реальное имя
                     else 
                        $filename = basename($_FILES['userfile']['name'], ".$file_extension");
 
                      $destination = $upload_dir .'/' . $filename;  
      
                      if (move_uploaded_file($_FILES['userfile']['tmp_name'], $destination))  
                          $info = 'Файл успешно загружен';  
                      else  
                          $error = 'Не удалось загрузить файл';  
                   }
                   // Иначе выводим ошибку
                   else $error .= 'Ширина должна быть не более 64px, а высота - 32px';
                }   
                else  
                    $error = 'Размер файла больше допустимого';  
            }   
            else  
                $error = 'У файла недопустимое расширение';  
        }   
        else  
        {  
            // массив ошибок  
            $error_values = array( 
 
                UPLOAD_ERR_INI_SIZE   => 'Размер файла больше разрешенного директивой upload_max_filesize в php.ini',
                UPLOAD_ERR_FORM_SIZE  => 'Размер файла превышает указанное значение в MAX_FILE_SIZE', 
                UPLOAD_ERR_PARTIAL    => 'Файл был загружен только частично',   
                UPLOAD_ERR_NO_FILE    => 'Не был выбран файл для загрузки',   
                UPLOAD_ERR_NO_TMP_DIR => 'Не найдена папка для временных файлов',   
                UPLOAD_ERR_CANT_WRITE => 'Ошибка записи файла на диск' 
 
                                  );  
      
            $error_code = $_FILES['userfile']['error'];  
      
            if (!empty($error_values[$error_code]))  
                $error = $error_values[$error_code];  
            else  
                $error = 'Случилось что-то непонятное';  
        }  
      
        return array('info' => $info, 'error' => $error);  
    }
0
0 / 0 / 0
Регистрация: 11.01.2012
Сообщений: 143
01.03.2012, 16:44  [ТС]
И ещё один вопрос: *см. вложение*
Миниатюры
Как сделать такую форму загрузки картинок  
0
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
01.03.2012, 18:07
и так и сяк.
0
0 / 0 / 0
Регистрация: 11.01.2012
Сообщений: 143
01.03.2012, 19:39  [ТС]
Быть такого не может. Определённо нужно что-то одно, но я не знаю, что правильно.
0
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
01.03.2012, 23:03
Цитата Сообщение от HardSEO Посмотреть сообщение
Быть такого не может.
HardSEO, ну вы же можете проверить )) проверьте, сработает в обоих случаях
0
0 / 0 / 0
Регистрация: 11.01.2012
Сообщений: 143
03.03.2012, 18:57  [ТС]
Странно, не хочет работать

Вот сайт (справа форма загрузки скина)

Вот код:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<?php
 
    function uploadHandle($max_file_size = 100, $valid_extensions = array(), $upload_dir = '.', $login = '{usertitle}')  
    {  
        $width = 64; $height = 32;
        $error = null;  
        $info  = null;  
        $max_file_size *= 1024;  
 
        if ($_FILES['userfile']['error'] === UPLOAD_ERR_OK)  
        {  
            // проверяем расширение файла  
            $file_extension = pathinfo($_FILES['userfile']['name'], PATHINFO_EXTENSION);  
            if (in_array($file_extension, $valid_extensions))  
            {  
                // проверяем размер файла  
                if ($_FILES['userfile']['size'] < $max_file_size)  
                {  
                   $size = getimagesize($_FILES['userfile']['name']);
 
                   // Если стороны нам подходят, то разрешаем дальнейшие действия
                  if ($size[0] <= $width || $size[1] <= 32)
                  {
 
                     // Если параметр $login передаем (т.е., если не пустой), то подставляем его
                     if ($login != '{usertitle}')
                        $filename = $login . "$file_extension";
                     // иначе оставляем реальное имя
                     else 
                        $filename = basename($_FILES['userfile']['name'], ".$file_extension");
 
                      $destination = $upload_dir .'/' . $filename;  
      
                      if (move_uploaded_file($_FILES['userfile']['tmp_name'], $destination))  
                          $info = 'Скин успешно загружен';  
                      else  
                          $error = 'Не удалось загрузить скин';  
                   }
                   // Иначе выводим ошибку
                   else $error .= 'Ширина должна быть не более 64px, а высота 32px';
                }   
                else  
                    $error = 'Размер файла больше допустимого';  
            }   
            else  
                $error = 'У файла недопустимое расширение';  
        }   
        else  
        {  
            // массив ошибок  
            $error_values = array( 
 
                UPLOAD_ERR_INI_SIZE   => 'Размер файла больше разрешенного директивой upload_max_filesize в php.ini',
                UPLOAD_ERR_FORM_SIZE  => 'Размер файла превышает указанное значение в MAX_FILE_SIZE', 
                UPLOAD_ERR_PARTIAL    => 'Файл был загружен частично',   
                UPLOAD_ERR_NO_FILE    => 'Не был выбран файл для загрузки',   
                UPLOAD_ERR_NO_TMP_DIR => 'Не найдена папка для временных файлов',   
                UPLOAD_ERR_CANT_WRITE => 'Ошибка записи файла на диск' 
 
                                  );  
      
            $error_code = $_FILES['userfile']['error'];  
      
            if (!empty($error_values[$error_code]))  
                $error = $error_values[$error_code];  
            else  
                $error = 'Случилось что-то непонятное';  
        }  
      
        return array('info' => $info, 'error' => $error);  
    }
 
?>
0
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
03.03.2012, 22:50
Цитата Сообщение от HardSEO Посмотреть сообщение
$login = '{usertitle}'
Цитата Сообщение от HardSEO Посмотреть сообщение
if ($login != '{usertitle}')
что это?
Что такое - usertitle , это переменная? Если да, то потеряли знак $ в начале. И для чело эта игра с кавычками и фигурными.
так сделай
PHP
1
$login = "$usertitle"
и
PHP
1
if ($login != "")
0
0 / 0 / 0
Регистрация: 11.01.2012
Сообщений: 143
04.03.2012, 16:09  [ТС]
Всё сделал. Не загружает.
0
0 / 0 / 0
Регистрация: 11.01.2012
Сообщений: 143
11.03.2012, 01:15  [ТС]
Я Вам отписал в ЛС неделю назад. Поможете настроить? Данные от FTP сайта дал.
0
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
11.03.2012, 01:58
Цитата Сообщение от HardSEO Посмотреть сообщение
Всё сделал. Не загружает.
блин, не пойму вроде ф-я рабочая. ошибку показывает? Если не показывает пропишите в начале файла
PHP
1
error_reporting(E_ALL);
или может он с DLE не контачит? повторюсь, с DLE дело не имел.
Цитата Сообщение от HardSEO Посмотреть сообщение
Я Вам отписал в ЛС неделю назад. Поможете настроить? Данные от FTP сайта дал.
да, я получал.
ближайщие дни плотно занят (заказ надо добить, и так просрочил), думаю к середине недели смогу посмотреть вашу проблему. Если не горит подождите, если надо срочно обратитесь к другому.
в любом случае дайте знать
0
0 / 0 / 0
Регистрация: 11.01.2012
Сообщений: 143
11.03.2012, 03:19  [ТС]
В DLE переменная логина - {login}.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.03.2012, 03:19
Помогаю со студенческими работами здесь

Как сделать такую форму?
Добрый день! Вопрос к гуру: как мне сверстать вот такую штуку? Я еще плаваю в верстке, и для меня это сложновато. Прошу вашей помощи. ...

Как сделать такую форму?
Помогите!Надо сделать такую форму на asp net mvc(add.chtml).

Как сделать такую форму

Как сделать такую форму?
Всем привет как сделать такую форму ? может есть какой-то материал посмотреть или готовые чтоб по шаблону сделать?

Как сделать такую форму
объясните, как можно сделать то, что я изобразил на рисунке. на форме есть информация из таблице &quot;сотрудники&quot; это табельный...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru