Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
koks_ikkkk
0 / 0 / 1
Регистрация: 12.03.2018
Сообщений: 196
1

Загрузка нескольких фотографий

14.06.2019, 14:31. Просмотров 154. Ответов 11

Здравствуйте.
Warning: Invalid argument supplied for foreach() in D:\soft\open\OSPanel\domains\abak-test\catalog\save_product.php on line 34

Форма:
HTML5
1
2
3
4
5
6
7
8
9
10
   <form id="add_product" action="save_product.php" method="post" enctype="multipart/form-data">
                  <div class="fields">
         <label for="photo_product">Фотографии:</label>
         <input type="file" id="photo_product" name="photo_product"  />
         <span class="dot">*</span>
      </div>
 
 
      <button type="submit" name="button" id="add">Добавить</button>
   </form>
PHP
1
2
3
4
5
6
7
8
9
10
$uploads_dir = '/catalog';
foreach ($_FILES["photo_product"]["error"] as $key => $error) {
    if ($error == UPLOAD_ERR_OK) {
        $tmp_name = $_FILES["photo_product"]["tmp_name"][$key];
        // basename() может предотвратить атаку на файловую систему;
        // может быть целесообразным дополнительно проверить имя файла
        $name = basename($_FILES["photo_product"]["name"][$key]);
        move_uploaded_file($tmp_name, "$uploads_dir/$name");
    }
}
Почему ошибка?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.06.2019, 14:31
Ответы с готовыми решениями:

Загрузка фотографий
Привет всем. Подскажите пожалуйста лучший на ваш взгляд скрипт для загрузки фотографий. Сайт на php.

Загрузка фотографий на сервер из массива
Всем привет , задача такова - нужно загрузить по url фотографии на сервер . Как я понимаю , нужно...

Как создать массив из нескольких фотографий?
Добрый вечер!Есть пути в БД,они разделены через запятую,например...

Сервер блокирует загрузку нескольких фотографий
Добрый день. Залил вчера на сайт галерею с одновременной загрузкой 10 фото и авто-уменьшением. На...

Асинхронная загрузка фотографий разные подходы
Подскажите правильно ли я понимаю механизм На некоторых сайта загрузка фотографий происходит...

11
skat9111
8 / 6 / 3
Регистрация: 27.09.2013
Сообщений: 78
14.06.2019, 14:57 2
koks_ikkkk,
что содержит
PHP
1
$_FILES["photo_product"]["error"]
говорит что вы используете не поддерживаемый аргумент для Foreach
0
koks_ikkkk
0 / 0 / 1
Регистрация: 12.03.2018
Сообщений: 196
14.06.2019, 15:11  [ТС] 3
Ну по идее должен содержать название файла...
0
atanov
338 / 300 / 109
Регистрация: 26.05.2016
Сообщений: 1,837
14.06.2019, 15:14 4
koks_ikkkk, массив $_FILES["photo_product"]["error"] пустой.
1
14.06.2019, 15:14
skat9111
8 / 6 / 3
Регистрация: 27.09.2013
Сообщений: 78
14.06.2019, 15:23 5
koks_ikkkk,
имя файла тут
PHP
1
$_FILES['photo_product']['name']
что бы не получать формат используй basename

сделай var_dump и посмотри, скорее всего там NULL или ["error"]=>
int(0)
1
andyyy
721 / 288 / 145
Регистрация: 26.05.2016
Сообщений: 1,887
14.06.2019, 15:46 6
Цитата Сообщение от koks_ikkkk Посмотреть сообщение
name="photo_product"
здесь массив должен быть!
1
koks_ikkkk
0 / 0 / 1
Регистрация: 12.03.2018
Сообщений: 196
14.06.2019, 15:58  [ТС] 7
array(1) { ["photo_product"]=> array(5) { ["name"]=> string(16) "Screenshot_1.png" ["type"]=> string(9) "image/png" ["tmp_name"]=> string(45) "D:\soft\open\OSPanel\userdata\temp\phpB49.tmp" ["error"]=> int(0) ["size"]=> int(149285) } } array(1) { ["photo_product"]=> array(5) { ["name"]=> string(16) "Screenshot_1.png" ["type"]=> string(9) "image/png" ["tmp_name"]=> string(45) "D:\soft\open\OSPanel\userdata\temp\phpB49.tmp" ["error"]=> int(0) ["size"]=> int(149285) } }

Вот дамп, не понимаю)

Добавлено через 6 минут
Прошу прощения, вот так

array(1) { ["photo_product"]=> array(5) { ["name"]=> string(16) "Screenshot_1.png" ["type"]=> string(9) "image/png" ["tmp_name"]=> string(46) "D:\soft\open\OSPanel\userdata\temp\phpE171.tmp" ["error"]=> int(0) ["size"]=> int(149285) } }
0
skat9111
8 / 6 / 3
Регистрация: 27.09.2013
Сообщений: 78
14.06.2019, 16:05 8
koks_ikkkk, ["error"]=> int(0) содержит значение 0, тебе в foreach нужно массив передать или строку.
PHP
1
foreach ($_FILES["photo_product"] as $key => $error) {
а там уже делать что ты хочешь
1
koks_ikkkk
0 / 0 / 1
Регистрация: 12.03.2018
Сообщений: 196
14.06.2019, 16:12  [ТС] 9
Теперь недопустимое смещение строки.

Warning: Illegal string offset 'name' in D:\soft\open\OSPanel\domains\abak-test\catalog\save_product.php on line 37

Warning: Illegal string offset 'name' in D:\soft\open\OSPanel\domains\abak-test\catalog\save_product.php on line 40

Warning: Illegal string offset 'type' in D:\soft\open\OSPanel\domains\abak-test\catalog\save_product.php on line 37

Warning: Illegal string offset 'type' in D:\soft\open\OSPanel\domains\abak-test\catalog\save_product.php on line 40

Warning: Illegal string offset 'tmp_name' in D:\soft\open\OSPanel\domains\abak-test\catalog\save_product.php on line 37

Warning: Illegal string offset 'tmp_name' in D:\soft\open\OSPanel\domains\abak-test\catalog\save_product.php on line 40

Warning: Illegal string offset 'error' in D:\soft\open\OSPanel\domains\abak-test\catalog\save_product.php on line 37

Warning: Illegal string offset 'error' in D:\soft\open\OSPanel\domains\abak-test\catalog\save_product.php on line 40
0
skat9111
8 / 6 / 3
Регистрация: 27.09.2013
Сообщений: 78
14.06.2019, 16:15 10
koks_ikkkk, так правильно, массив передал и дальше с ним нужно работать как тебе нужно. Если хочешь передать изображение и сохранить, используй библиотеку php7.2_gd (она должна быть встроена).
И вообще у тебя в заголовке написано как загрузить несколько фотографий, разберись сначала как одну загрузить
0
koks_ikkkk
0 / 0 / 1
Регистрация: 12.03.2018
Сообщений: 196
14.06.2019, 19:02  [ТС] 11
Я разобрался с загрузкой.
Но теперь данный скрипт загружает только 1 файл(

PHP
1
2
3
4
5
6
7
8
$uploads_dir = '../images/';
foreach ($_FILES["photo_product"] as $key => $error) {
    if ($error == UPLOAD_ERR_OK) {
        $tmp_name = $_FILES["photo_product"]["tmp_name"];
        $name = basename($_FILES["photo_product"]["name"]);
        move_uploaded_file($tmp_name, "$uploads_dir/$name");
    }
}
Почему?
0
andyyy
721 / 288 / 145
Регистрация: 26.05.2016
Сообщений: 1,887
14.06.2019, 21:29 12
Я уже писал
1
14.06.2019, 21:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.06.2019, 21:29

Загрузка фотографий через PHP скрипт
Необходимо на сайт загружать фотографии со своего смартфона (Андроид - сайт написан для друга)....

Загрузка фотографий в таблицу Mysql Выдает ошибку!
Здравствуйте друзья не получается добавить фотографии в таблицу mysql Выдает ошибку такого...

Загрузка нескольких файлов
Возникла проблемка как сделать загрузку нескольких файлов одновременно &lt;form action=&quot;&quot;...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru