Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Multi загрузка с удалённо сервера, вопрос !


Автор: VikZet 27.11.2006, 19:43
Всем привет,
следующий вопрос к спецам по пхп
есть скрипт загрузки фалов с удалённого сервера, проблема в том что он может загружать только один файл, хотелось добавить возможность мульти загрузки, как правильно создать цикл ?

пример определения количества загрузок
Код

<td>
  <select name="numfiles" class="select">
<?php



for ($i=1; $i<=15; $i++) {
echo ("<option value=$i>$i");
}
?>
</select>
<input type="Submit" value="Одновременных закачек" name="up" class="button">&nbsp;&nbsp;&nbsp;&nbsp;
<br><br>
</td>
</tr>
</form>
<tr>
   <td align="center">
<form action="<?echo $PHP_SELF ?>" method="post" enctype="multipart/form-data" name="form1" id="form1">
<?php
if (isset($_POST['up']))
    {

 for ($i=1; $i<=$_POST['numfiles']; $i++){

    echo "<input type=\"File\" name=\"url\"  size=\"30\ class=\"input\"><br>\n";}
    echo "<br />";
    echo "<input type=\"submit\" name=\"sendfiles\" value=\"Залить\" />";
   }




Сам код загрузки

Код

 $url = $_POST['url'];
                set_time_limit(86400);
                $filename = basename($url);
                if ($filename !== 'index.php') {
                        if ($fr = @fopen($url, "rb")) {
                                $fp = fopen($filename, "wb");
                                while (!feof($fr)) {
                                        fputs($fp, fread($fr, 2048));
                                }
                                fclose($fp);
                                fclose($fr);
                        }

Автор: Kefir 27.11.2006, 22:14
А в чём проблема-то? Несколько файлов загружать можно. Просто дай им разные имена или в массив кидай. Получишь всё что надо. Единственная проблема, что обычно довольно маленький лимит на загрузку стоит, но это уже от хостера зависит.

Автор: VikZet 27.11.2006, 23:15
Цитата(Kefir @ 27.11.2006,  22:14)
А в чём проблема-то? Несколько файлов загружать можно. Просто дай им разные имена или в массив кидай. Получишь всё что надо. Единственная проблема, что обычно довольно маленький лимит на загрузку стоит, но это уже от хостера зависит.

c лимитом я разберусь, не проблема

проблема в том что я не могу дать им разные именна, так как не известно сколько точно их будет
можеть быть один а может и 20, выбор происходит по выше показанному коду "select"

на сколько я знаю мне нужен обрабатывать всё циклом к примеру foreach, я пробывал, но у меня не идёт

как можно выеснить именна фалов ? также как и при нормальной загрузке ? $HTTP_POST_FILES

или другим способом ?

Добавлено @ 23:15 
скорее всего проблема в том что я не могу правильно создать массив, подскажите как мне примерно его создать 

Автор: Kefir 27.11.2006, 23:24
можно раздать имена а-ля 1,2,3,4.....15. Или же всем дать имя "files[]". Тогда все они будут складываться в массив files. Посмотреть где они и как можно просто распечатав массив $_FILES (print_r($_FILES)) в принимающем скрипте. Ну или $HTTP_POST_FILES, но это устаревшая форма smile

Автор: VikZet 27.11.2006, 23:34
Kefir, 

допусти я создал поля с files[] н количеством, на выбор как примерно должен выглядеть мой цикл 

вот к премеру вот так ?

Код


  
  foreach($_FILES as $strFieldName => $arrPostFiles){


                $url = $arrPostFiles ['file[]'];
                set_time_limit(86400);
               
                $filename = basename($file[]);
                        if ($fr = @fopen($url, "rb")) {
                                $fp = fopen($filename, "wb");
                                while (!feof($fr)) {
                                        fputs($fp, fread($fr, 2048));
                                }
                                fclose($fp);
                                fclose($fr);
                   
}

Автор: Kefir 27.11.2006, 23:49
VikZet, распринтай содержимое $_FILES через print_r($_FILES) и посмотри сам. Я сам уже не помню.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)