никогда не пишите в одну строку несколько функций, это признак быдлокода, а как минимум неуважения к самому себе.
Учту, спасибо.
Viper пишет:
массив для кого изобрели? Внутри цикла в массив добавили, за циклом получили из массива.
Или я тупой, или не понимаю как это сделать, пробовал в массив, пробовал в куки, пробовал в сессию, все одно = получаю только последний элемент: $uploadfile
Можете подсказать? Пробовал самое простое: $uploadfile = array($uploadfile);
Как бы ни пробовал, получаю только последнее значение: Array ( [0] => files/4lanq7boximg.png ) уже голова болит, с утра мучаю, где то что то мелочь не понимаю.
---
ОМГ )))))))) вроде нашел решение, Госпади, все же много проще... $array[] = $uploadfile;
з.ы. Вот у меня всегда так, как в чем то сложном, более менее сразу нахожу решение, а в простом могу затупить на пол дня. ИМХО бред. Еще раз СПАСИБО!
Если не вдаваться в подробности, скрипт выше, делает рандомные имена файлов, по условиям, из массива введенных пользователем из <input type "file" multipart name="xtt[]"> Соответственно из этого цикла получаем все файлы из массива $_FILES; Предположим, пользователь загрузил 3 файла, в итоге имеем 3 имени например значение переменной в цикле $uploadfile:
Пожалуйста подскажите, как можно получить все эти значения переменой $uploadfile, за пределами этого цикла?
Пробовал использовать $GLOBALS, не помогает, получаю только последнее значение. На текущий момент нашел решение использовать внешний текстовый файл, в который цикл пишет все значение переменной $uploadfile, но это очень неудобно, т.к. файл формируется не мгновенно, отсюда проблемы.
ЗАРАНЕЕ БОЛЬШОЕ СПАСИБО! Извиняюсь если где то затупил.
Вот по сути весь код операции, очень простой. Но суть проблемы узнать размер каждого файла в массиве MultiPart, а показывает в лучшем случае только первый. (
З.Ы. Из картинки приведенной выше, я вижу вхождение как и должно быть: [0] = 1й файл, [1] = 2й файл, но как написать условие? Может кто то подсказать? Как показать все размеры всех файлов в массиве, ведь сколько их загрузит пользователь мы не знаем (( те надо как то проверять длину массива ( не совсем понимаю...
Показывает только 1е вхождение, те считает только 1й файл также как и у меня. А мне нужно как то показать размер каждого файла? Как это можно сделать?
Если выбирается 1й файл = 10МБ, а второй скажем 50МБ, скрипт считает только 1й, соответственно условие будет ложным, тк считает и смотрит только на 1й файл.
Вот пример отображения:
Загружаю 2 разных файла, но размер показывает один и тот же, те размер первого файла.
З.Ы. В идеале, условие такое: если любой из файлов в массиве больше 1ГБ, тогда exit();
Глупо конечно, но может смотреть на сессию в папку: $_FILES['userfile']['tmp_name'] но это через чур как по мне. Есть хоть какие то идеи?
, не видит элементов в массиве $_FILES['xtt'], дело в том, что загружается пачка файлов, мне нужно проверить размер каждого файла в этом массиве, как пока не соображу. Может что то путаю, подскажите? Спасибо!
Т.е.: $_FILES['xtt']['size'][0] только так начинает видить 1й файл и его размер, вот так $_FILES['xtt']['size'] - не видит размера вообще (
Еще конкретнее постараюсь задать вопрос: Как узнать размер каждого файла в массиве $_FILES, при MultiPart загрузке файлов и соответственно проверить условием?
OrmaJever пишет:
$_FILES['xtt'][0]['size']
Так, тоже не видит размера совсем, те пусто в переменной.
Но прикол в том, что $_FILES['xtt']['size'][0] определяет только вхождение и размер первого файла в массиве $_FILES, соответственно считывает размер только первого файла, к примеру: 1й файл который мы загружаем в форме = 1МБ, 2й = 1000МБ, в итоге ограничение не сработает, тк $_FILES['xtt']['size'][0] видит только 1МБ первого файла.
Как показать размер всех файлов в массиве, чтобы узнать размер каждого и если размер любого больше 1ГБ, то exit();
Заранее СПАСИБО!
З.Ы. Искал всяко, но кроме функций на $_FILES ничего толком.
broshurkaplus спасибо большое за ответ, а нельзя как то в цикле как у меня сделать переименование, чтобы не писать кучу кода? Я имею ввиду, как сделать в цикле foreach чтобы переименовывал каждый файл загруженный на хост? Я пробовал в цикле после самой загрузки, но это неверно, т.к. цикл не успевает за тем, как файлы переместятся из темпа в каталог и показывает ошибку об отсутствии файлов, а если ниже, переименовывает но только 1й файл... Цикл неверен.
быстрым взглядом...
$max=6 - так полагаю максимальное число файлов, нет это длина строки, а переименовывает - потому что строка сформировалась один раз и получается что все файлы переименовывает в это имя.
попробуйте $rstring = RString(); переместить внутрь последнего foreach, тогда строка будет каждый раз генериться в цикле.
гдето было такое...
попробуйте так:
$newFileName - глобал, (например для дуступа вне функции для вставки в бд) както опрелите уник. имя для данной загрузки или сгенерьте
$newFileName = RString();
$maxfile - максимальное колво файлов (ограничте в скрипте, вдруг кто 100500файлов отправит, или подсчитайте count)
$max=6 - это 6 символов генерится в рандоме для нового имени. А куда именно переместить в foreach, я так понмиаю не переименовывает все файлы тк не получает, а точнее получает не те сведения и работает не в том цикле.
Sail спасибо за ответ, да вроде читал, а что не так? Можете примерчик привести, если не сложно подскажите верный цикл для этой задачи? Спасибо!