Ситуация такая, могу загружать по одному фото, но потребовалось сделать загрузку нескольких, решил написать отдельную функцию, но что то запутался. Код при загрузке 1 файла
// Проверка, загружено изображение или нет
if (is_uploaded_file($_FILES["image"]["tmp_name"])) {
// Если загружено, переместить его в нужную папку
move_uploaded_file($_FILES["image"]["tmp_name"], $_SERVER['DOCUMENT_ROOT'] . "/upload/images/products/{$id}.jpg");
}
html код
<input type="file" name="image" placeholder="" value="">
Для загрузки нескольких фото создал отдельную функцию, код ниже
public static function UploadPhoto($id)
{
$file_count = count($_FILES["image"]);
$file_keys = array_keys($_FILES["image"]);
for ($i=0; $i<$file_count; $i++) {
if (is_uploaded_file($_FILES["image"]["tmp_name"])) {
// Если загружалось, переместим его в нужную папке, дадим новое имя
move_uploaded_file($_FILES["image"]["tmp_name"], $_SERVER['DOCUMENT_ROOT'] . "/upload/images/products/{$id}_{$i}.jpg");
}
}
}
вызываю функцию upl::UploadPhoto($id);
изменил html код
<input type="file" name="image[]" placeholder="" value="">
<input type="file" name="image[]" placeholder="" value="">
Мое видение ситуации -> нужно создать массив image, передать туда все загруженные файлы, передать этот массив функции, в функции получить количество загруженных файлов, переместить файлы в нужную директорию. По коду думаю что ошибка в функции том месте, где идет обращение к глобальному массиву $_FILES, подскажите как правильно сделать
Во первых, массив файлов хранится так.
array(1) images {
[tmp_name] => [
[0] => /file1.tmp
[1] => /file2.tmp
[2] => /file1.tmp
]
[name] => [
[0] => /file1.jpg
[1] => /file2.png
[2] => /file1.gif
]
...
}
А значит это :
$file_count = count($_FILES["image"]);
Нужно написать так :
$file_count = count($_FILES["image"]['name']);
А значит обработка массива будет другая.
for($i = 0; $i < $file_count;$i++){
move_uploaded_file($_FILES['image'][$i]['tmp_name'], $_SERVER['DOCUMENT_ROOT'] . "/upload/images/products/{$id}_{$i}.jpg"
}
Во вторых, не обязательно в HTML добавлять два поля. Достаточно указать в name массив.
<input type="file" name="image[]" placeholder="" value="">
P.S. Советую проверять $_FILES['image'][$i]['type'] и сохранять нужный формат, ибо сохранять gif в jpeg не самая лучшая идея.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Если я применяю -webkit-filter: grayscale(100%); картинка будет с фильтром только в рамках сайтаМожно ли, допустим скачивать эту картинку с этим же эффектом?...
получаю кучу информации через ajax (человек просто вбивает в поиске нужное слово и получает кучу инфы), и ее нужно красиво вывестиТо есть создать...