Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
25 / 25 / 4
Регистрация: 21.10.2012
Сообщений: 391
1

Загрузка файлов

29.09.2013, 00:36. Показов 1835. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток. Подскажите, как можно изменить данный скрипт, чтобы при загрузке картинок у каждого файла были имена 1.jpg, 2.jpg и т.д.
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
<?php
$filePath = 'upload';
if (isset($_FILES['mphoto']))
{
   $addMoroPhoto = array_filter($_FILES['mphoto']['name']);
                
   // Если поля для дополнительных фоток не пустые ...
   if (sizeof($addMoroPhoto) > 0)
   {
       foreach ($addMoroPhoto as $key => $name)
       {
          $type     = $_FILES['mphoto']['type'][$key];
          $tmp_name = $_FILES['mphoto']['tmp_name'][$key];
          $size     = $_FILES['mphoto']['size'][$key];
                          
          // расширение файла  
          $upload_file_ext = pathinfo($addMoroPhoto[$key], PATHINFO_EXTENSION);
          // Если расширение не подходит, возвращаем false
          if (in_array(strtolower($upload_file_ext), $ext)) 
          {
             // Если размер загружаемого файла  больше заданного, - умираем
             if ($size < (1000 * $maxFileSize['ads']['i']))  
             {
                // Уникальное имя для файла
                $file_name = uniqid("") . '.' . strtolower($upload_file_ext);
                                
                // Директория
                $destination = $filePath . '/' . $file_name;
                // Загрузка файла
                if (move_uploaded_file($tmp_name, $destination))
                {
                   // здесь какие-то действия, например, уменьшить размер картинки, водяной знак..  
                   chmod($destination, 0755);  // .. или права задать
                }
             }
          }
       }
?>
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.09.2013, 00:36
Ответы с готовыми решениями:

Загрузка файлов.
Суть проблемы такова: файл не проходит проверку на соответствие расширению, в том что загружаю файл...

Загрузка файлов
Обьясните почему я не могу загрузить файл больше 2 или 5 мег. ??? пишет ошибку ... если мах-сайз...

Загрузка файлов
Надо загрузить файл через фору, при этом создать новую папку и переместить его туда. Файлы должны...

Загрузка файлов
Доброго всем времени суток! Есть у меня два сайта. Один(главный сайт) на обычном хостинге,...

17
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
29.09.2013, 00:39 2
Счетчик имени файлов
0
25 / 25 / 4
Регистрация: 21.10.2012
Сообщений: 391
29.09.2013, 00:46  [ТС] 3
Цитата Сообщение от KOPOJI Посмотреть сообщение
Дурацкий вопрос, но "Куда ставить то???" (c) Добро пожаловать или посторонним вход воспрещен
Как в множественной загрузке файлов это организовать, не могли бы вы воткнуть это в код, если не затруднит. Буду очень благодарен!
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
29.09.2013, 00:49 4
M1lleniuM, а вы подумайте сами, попробуйте. Если работать не будет - ничего страшного, изменить обратно не проблема.. Думайте, экспериментируйте, иначе так и будете постоянно спрашивать у других решения Уверен, если вы подумаете, то вы справитесь с задачей
0
25 / 25 / 4
Регистрация: 21.10.2012
Сообщений: 391
29.09.2013, 01:05  [ТС] 5
Цитата Сообщение от KOPOJI Посмотреть сообщение
M1lleniuM, а вы подумайте сами, попробуйте. Если работать не будет - ничего страшного, изменить обратно не проблема.. Думайте, экспериментируйте, иначе так и будете постоянно спрашивать у других решения Уверен, если вы подумаете, то вы справитесь с задачей
Ну тогда давайте с вами рассуждать логически
Уникальное имя файлам задается в этой переменной.
PHP
1
$file_name = uniqid("") . '.' . strtolower($upload_file_ext);
Значит цикл while должен начинаться прямиком перед этой переменной.
Остается вопрос, где ему заканчиваться.
предположу, что как-то так:
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
<?php
$filePath = 'upload';
if (isset($_FILES['mphoto']))
{
   $addMoroPhoto = array_filter($_FILES['mphoto']['name']);
                
   // Если поля для дополнительных фоток не пустые ...
   if (sizeof($addMoroPhoto) > 0)
   {
       foreach ($addMoroPhoto as $key => $name)
       {
          $type     = $_FILES['mphoto']['type'][$key];
          $tmp_name = $_FILES['mphoto']['tmp_name'][$key];
          $size     = $_FILES['mphoto']['size'][$key];
                          
          // расширение файла  
          $upload_file_ext = pathinfo($addMoroPhoto[$key], PATHINFO_EXTENSION);
          // Если расширение не подходит, возвращаем false
          if (in_array(strtolower($upload_file_ext), $ext)) 
          {
             // Если размер загружаемого файла  больше заданного, - умираем
             if ($size < (1000 * $maxFileSize['ads']['i']))  
             {
                $i = 0;
                while(file_exists(++$i . '.jpg')){
                  $file_name = $i . '.jpg';
                  $destination = $filePath . '/' . $file_name;
                // Загрузка файла
                  if (move_uploaded_file($tmp_name, $destination))
                  {
                     // здесь какие-то действия, например, уменьшить размер картинки, водяной знак..  
                     chmod($destination, 0755);  // .. или права задать
                  }
                }
             }
          }
       }
?>
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
29.09.2013, 01:12 6
неверно. Переведите ваш цикл на русский язык - думаю, станет ясно.
Цитата Сообщение от M1lleniuM Посмотреть сообщение
PHP
1
while(file_exists(++$i . '.jpg')){
Пока файл существует... увеличиваем счетчик И закидываем файлы. Только вы, видимо, не заметили, но я специально перенес точку с запятой на следующую строку, чтобы она выделялась и показывала, что тело цикла - пустое. А у вас нет

Добавлено через 1 минуту
т.е. у вас файлы будут постоянно перезаписываться
0
25 / 25 / 4
Регистрация: 21.10.2012
Сообщений: 391
29.09.2013, 01:20  [ТС] 7
Цитата Сообщение от KOPOJI Посмотреть сообщение
неверно. Переведите ваш цикл на русский язык - думаю, станет ясно.

Пока файл существует... увеличиваем счетчик И закидываем файлы. Только вы, видимо, не заметили, но я специально перенес точку с запятой на следующую строку, чтобы она выделялась и показывала, что тело цикла - пустое. А у вас нет

Добавлено через 1 минуту
т.е. у вас файлы будут постоянно перезаписываться
Все очень плохо)
Но спасибо за разъяснения. Т.е. тело цикла и оставить пустым? (интерпретатор не будет ругаться на простую ;?)
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
<?php
$filePath = 'upload';
if (isset($_FILES['mphoto']))
{
   $addMoroPhoto = array_filter($_FILES['mphoto']['name']);
                
   // Если поля для дополнительных фоток не пустые ...
   if (sizeof($addMoroPhoto) > 0)
   {
       foreach ($addMoroPhoto as $key => $name)
       {
          $type     = $_FILES['mphoto']['type'][$key];
          $tmp_name = $_FILES['mphoto']['tmp_name'][$key];
          $size     = $_FILES['mphoto']['size'][$key];
                          
          // расширение файла  
          $upload_file_ext = pathinfo($addMoroPhoto[$key], PATHINFO_EXTENSION);
          // Если расширение не подходит, возвращаем false
          if (in_array(strtolower($upload_file_ext), $ext)) 
          {
             // Если размер загружаемого файла  больше заданного, - умираем
             if ($size < (1000 * $maxFileSize['ads']['i']))  
             {
                $i = 0;
                while(file_exists(++$i . '.jpg'))
                  ;
                $file_name = $i . '.jpg';
                $destination = $filePath . '/' . $file_name;
                // Загрузка файла
                if (move_uploaded_file($tmp_name, $destination)){
                     // здесь какие-то действия, например, уменьшить размер картинки, водяной знак..  
                     chmod($destination, 0755);  // .. или права задать
                  }
                }
             }
          }
       }
?>
0
KOPOJI
29.09.2013, 01:25
  #8

Не по теме:

Цитата Сообщение от M1lleniuM Посмотреть сообщение
интерпретатор не будет ругаться на простую
ну запустите же вы, проверьте. Почему вы все так боитесь проверить скрипт?) Неужто рядом кто-то стоит с дубинкой и за каждую ошибку по голове? :jokingly: Не будет никаких ошибок от этого

0
25 / 25 / 4
Регистрация: 21.10.2012
Сообщений: 391
29.09.2013, 01:28  [ТС] 9
Цитата Сообщение от KOPOJI Посмотреть сообщение
ну запустите же вы, проверьте. Почему вы все так боитесь проверить скрипт?) Неужто рядом кто-то стоит с дубинкой и за каждую ошибку по голове? Не будет никаких ошибок от этого
Нет возможности запустить там где нужно Так бы давно запустил
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
29.09.2013, 01:32 10
Цитата Сообщение от M1lleniuM Посмотреть сообщение
Нет возможности запустить там где нужно
Ну вас же интересовало (на данном этапе) только будет ли выдавать ошибку? Ну так можно запустить любой другой код с пустым телом, хоть такой
PHP
1
2
3
4
5
error_reporting(-1);
$i = 0;
while(++$i < 10)
  ;
echo $i;
да хоть на том же writecodeonline.com и посмотреть, выдаст компилятор результат или же ошибку
Ну и совсем уж дикий вариант - сходить на офф сайт http://www.php.net/manual/ru/c... .intro.php
Любой сценарий PHP состоит из последовательности инструкций. Инструкцией может быть присваивание, вызов функции, повтор кода (цикл), сравнение, или даже инструкция, которая ничего не делает (пустой оператор). После инструкции обычно ставится точка с запятой. Кроме того, инструкции могут быть объединены в блоки заключением их в фигурные скобки. Блок инструкций также сам по себе является инструкцией. В этом разделе описываются различные типы инструкций.
0
25 / 25 / 4
Регистрация: 21.10.2012
Сообщений: 391
29.09.2013, 01:34  [ТС] 11
Цитата Сообщение от KOPOJI Посмотреть сообщение
Ну вас же интересовало (на данном этапе) только будет ли выдавать ошибку? Ну так можно запустить любой другой код с пустым телом, хоть такой
PHP
1
2
3
4
5
error_reporting(-1);
$i = 0;
while(++$i < 10)
  ;
echo $i;
да хоть на том же writecodeonline.com и посмотреть, выдаст компилятор результат или же ошибку
Ну и совсем уж дикий вариант - сходить на офф сайт http://www.php.net/manual/ru/c... .intro.php
Вот спасибо, добрый человек! Все разъяснили, стал поумнее буду знать)

Добавлено через 53 секунды
И еще вопрос. А если предположим загружаются не только jpeg файлы, придется делать условие на расширение?
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
29.09.2013, 01:40 12
ну да.. Расширение файла можно хранить в переменной. Самый простой вариант (но не самый лучший) - проверка по имени файла
PHP
1
2
3
if(!preg_match('~\\.(jpe?g|png|gif)$~i', $filename, $matches))
    exit('Wrong image type');
$type = $matches[1]; //jpeg, jpg, png или gif (регистр символов значения не имеет)
а затем подставлять в цикл while
PHP
1
2
3
4
while(file_exists(++$i . '.' . $type))
  ;
$filename = $i . '.' . $type;
.....
Кстати, этот код можно даже еще сократить, убрав лишнюю строку присвоения
PHP
1
2
3
while(file_exists( $filename = ++$i . '.' . $type))
  ;
.....
1
25 / 25 / 4
Регистрация: 21.10.2012
Сообщений: 391
29.09.2013, 01:45  [ТС] 13
Цитата Сообщение от KOPOJI Посмотреть сообщение
ну да.. Расширение файла можно хранить в переменной. Самый простой вариант (но не самый лучший) - проверка по имени файла
А файлнейм здесь брать отсюда?
PHP
1
$_FILES['userfile']['name']
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
29.09.2013, 01:56 14
да.
1
25 / 25 / 4
Регистрация: 21.10.2012
Сообщений: 391
29.09.2013, 21:31  [ТС] 15
Цитата Сообщение от KOPOJI Посмотреть сообщение
да.
Еще очень маленький вопрос.
Если нужно посчитать кол-во файлов в директории, можно ли как-то отфильтровать значение этой конструкции?
PHP
1
echo count(scandir('/folder/'));
А то она вроде как считает и папки тоже.
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
29.09.2013, 21:32 16
Можно частично, с помощью другой функции
PHP
1
echo count(glob('/folder/*.*'));
1
25 / 25 / 4
Регистрация: 21.10.2012
Сообщений: 391
29.09.2013, 21:52  [ТС] 17
Цитата Сообщение от KOPOJI Посмотреть сообщение
Можно частично, с помощью другой функции
Спасибо!
0
25 / 25 / 4
Регистрация: 21.10.2012
Сообщений: 391
04.10.2013, 22:27  [ТС] 18
Цитата Сообщение от KOPOJI Посмотреть сообщение
Можно частично, с помощью другой функции
PHP
1
echo count(glob('/folder/*.*'));
Возник еще вопрос. Эта функция (glob) регистрозависима. Т.е. 1.jpg != 1.JPG. Можно как-то это исправить? Не подскажите?
0
04.10.2013, 22:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.10.2013, 22:27
Помогаю со студенческими работами здесь

загрузка файлов
у меня стоит ubuntu server 10.04.....c сервером LAMP..... попытался создать скипт для загрузки...

Загрузка файлов
Здравствуйте. Хочу сделать загрузку файлов на сервер, чтобы при загрузке ссылка на файл...

Загрузка файлов
Всем привет) Вот уже несколько часов пытаюсь побороть проблему с загрузкой файлов,в БД файл...

загрузка файлов
Не могу разобраться как с помощью $_FILES загружать файлы типа *.rar и *.zip *.rar вообще не...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru