Одновременная загрузка нескольких изображений PHP

123
Ilekor
На сайте с 22.04.2009
Offline
138
#11

Пример где то в нете нашел, а потом подделал.

Лучший дорген 21 века AgDor(http://agdor.info)
Ilekor
На сайте с 22.04.2009
Offline
138
#12
St.I.An:
for($i = 0; isset($_POST["param{$i}"]); $i++) { .. } ?
это, конечно, без всех условий "предохранения"...

St.I.An добавил 21.12.2009 в 22:37
или

<?
for($i = 1; isset($_POST["fupload".(($i > 1) ? $i : '')]); $i++) {
.. // ваш небольшой код
} ?
?>

как-то так, сам не тестил.

Спасибо за помощь, теперь понял как работает, все сделал, работает.

kil
На сайте с 03.04.2006
Offline
84
kil
#13

А еще можно сделать "размножение" инпутов. Типа выбрал файл - появился новый пустой инпут для еще одного файла. :)

Если интересно, могу подсказать как сделать :)

ewg777
На сайте с 04.06.2007
Offline
225
#14
FFFFx029A
На сайте с 01.09.2007
Offline
142
#15

Я помню в своё время спионерил неплохой яваскрипт у почты яндекса, там кнопочка +/- и за раз сколько влезит мона файлов загружать, но у меня больше 5ти чото никогда не получалось, остальные не видит, мож какуюто деталь упустил..



<script>



function xdropFile(btn){
if(document.getElementById) {
tr = btn;
while (tr.tagName != 'TR') tr = tr.parentNode;
tr.parentNode.removeChild(tr);
xcheckForLast();
}
}
function xaddFile(btn){
if(document.getElementById) {
tr = btn;
while (tr.tagName != 'TR') tr = tr.parentNode;
var idSuffix = Math.round(Math.random()*1000);
var newTr = tr.parentNode.insertBefore(tr.cloneNode(true),tr.nextSibling);
thisChilds = newTr.getElementsByTagName('td');
for (var i = 0; i < thisChilds.length; i++){
if (thisChilds.className == 'header') thisChilds.innerHTML = '';
if (thisChilds.className == 'files') thisChilds.innerHTML = '<input size="32" name="xtt[]" class="wideFile" type="file">';
}
checkForLast();
}
}
function xcheckForLast(){
btns = document.getElementsByName('xdrop');
for (i = 0; i < btns.length; i++){
btns.disabled = (btns.length == 1) ? true : false;
}
}

</script>




<?
// это в форму кидать
echo "
<table width=20% align=center>
<tr>
<td width=\"20%\"><input type=\"file\" size=\"32\" name=\"xtt[]\"></td>
<td nowrap=\"nowrap\"><input type=\"button\" name=\"xdrop\" value=\" &minus; \" onClick=\"xdropFile(this);\">
<input type=\"button\" value=\" + \" onClick=\"xaddFile(this);\"></td>
</tr>


</table>";


//это обрабатывать так:

for($i=0;$i<count($_FILES['xtt']);$i++)
{
//файлик
echo $_FILES['xtt']['name'][$i];
}
?>

http://www.youtube.com/watch?v=Gyl4E4EcPdc (http://www.youtube.com/watch?v=Gyl4E4EcPdc) - партнёрка от Мавроди и МММ))) http://miniwm.ru/soft.php?read=917 (http://miniwm.ru/soft.php?read=917) CMS MiniWM v2.8 - 49.99$
Ilekor
На сайте с 22.04.2009
Offline
138
#16

Загрузку я сделал, путь к картинке заношу в базу, в форме 9 импутов для загрузки. Обрабатываю изображения, делаю маленькие и большие фото. Но возникла следующая проблема, как бы отлично оно не работало, но фото не успевают загружаться так как нехватает 30 сек для обработки и загрузки фото, кто подскажет как теперь быть?

SI
На сайте с 19.12.2007
Offline
77
#17

прикиньте, во что именно упираетесь по времени - в загрузку (ваш медленный upload или хостинг "притормаживает") или в "обработку" - где именно слабое звено

попробуйте увеличить max_execution_time (например, echo ini_set('max_execution_time','300').' '.ini_get('max_execution_time'); что говорит?)

если всё плохо - то только загрузка "по-одному", например, ajax-ом, правда для больших файлов все равно ведь будет падать? (:

рисуем, верстаем, кодим и крутим ...аа, да, еще принимаем заказы (:
[Удален]
#18

Дело тут совсем не в нехватке времени, а я уверен что 100% в херовой обработке миниатюр, ведь как вы написали "я нашел в интернете и доделал под нужды", дальше я продолжу "этот говноскрипт".

В общем фишка в том, что ресайз изображений на gd - плохое занятие, оно потребляет ОООЧЕНЬ много памяти, на избражение 1000х1000 надо порядка 30 мегабайт памяти(так как если вам неизвестно но все обработки изображений происходят над BMP форматом "упаковки" данных, то есть жпег 300килобайтовый при конвертации в бмп чудесным образом превраайтеся в 30 метровую бмпшку), используйте imagick для ресайза картинок, imagick конвертирует по другому(видимо через темп файлы или в своей нераздлеляемой с пхп памятью, уверен что в темп файлах большие изображения, так как не было ограничений на размер конвертируемого файла у меня ни разу) и все будет работать.

ЗЫ: всем "советчикам по поводу max_time_limit" - ваш костыль не всегда актуален, это решение влоб из серии "решение методом перебора". знайте то, что время приема данных (post) не включено в time_limit ;)

SI
На сайте с 19.12.2007
Offline
77
#19

bearman, век живи, век учись, спасибо, почитал про max_input_time (:

Stalser
На сайте с 04.12.2008
Offline
100
#20

Ilekor, вот тут обсуждали вопрос о массовой загрузке изображений. Там приводили несколько ссылок на различные массовые загрузчики (например, этот я использовал в 2 проектах). Может что-нибудь понравится и пригодится.

Но сколько я не искал, так и не нашел flash-загрузчик, который мог бы изменять размер изображения на стороне клиента с помощью flash и отправлять уже уменьшенные копии изображений на сервер...

123

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий