Upload PHP

Discussion in 'PHP' started by Termin@L, 22 Oct 2007.

  1. Termin@L

    Termin@L Elder - Старейшина

    Joined:
    7 Dec 2006
    Messages:
    183
    Likes Received:
    43
    Reputations:
    53
    Вопрос, как через один <inpu type='file'> загружать неограниченное кол-во файлов, ну чтобы порльзователь выделял нужные и грузил
     
  2. ShAnKaR

    ShAnKaR Пачка маргарина

    Joined:
    14 Jul 2005
    Messages:
    904
    Likes Received:
    297
    Reputations:
    553
    никак
     
  3. Termin@L

    Termin@L Elder - Старейшина

    Joined:
    7 Dec 2006
    Messages:
    183
    Likes Received:
    43
    Reputations:
    53
    жаль... а как можно организовать,загрузку большого кол-ва файлов на серв, и чтобы миниму затрат для пользователя(разумеется через веб-интерфейс)
     
  4. sw04

    sw04 Elder - Старейшина

    Joined:
    10 Oct 2007
    Messages:
    44
    Likes Received:
    10
    Reputations:
    0
    при заполнении поля файл, можно добавлять новое пустое поле с тем же инпут, но др. именем. и т.о. передать массив файлов.
    самый оптимальный вариант, который я видел на сегодня -)
     
    1 person likes this.
  5. romen

    romen New Member

    Joined:
    16 Oct 2007
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    я делал через FLASH, есть в нем такая возможность выделяешь кучу файлов и грузишь их на сервак. SWFUpload поищи. Там все просто, хотя есть свои заморочки - например из-за прокси с авторизацией я не смог добиться его работы.
     
  6. r0

    r0 Elder - Старейшина

    Joined:
    17 Jul 2005
    Messages:
    450
    Likes Received:
    149
    Reputations:
    147
    Нужно динамику в форме =)
    Получается что-то типа как на мэил[дот]ру
    PHP:
    <form enctype='multipart/form-data' method=post>
    <table>
      <tr>
        <td><input type="file" size="32" name="att[]" class=input></td>
        <td><input type="button" name="drop" value=" &minus; " onclick="dropFile(this);">
            <input type="button" value=" + " onclick="addFile(this);"></td>
      </tr>
    </table>
    <input class=button type=submit value='Загрузить'>
    </form>
    <script language='JavaScript1.1' type='text/javascript'>
    <!--
    function dropFile(btn)
    {
      if(document.getElementById)
      {
        while (btn.tagName != 'TR') btn = btn.parentNode;
        btn.parentNode.removeChild(btn);
      }
    }
    function addFile(btn)
    {
      if(document.getElementById)
      {
        while (btn.tagName != 'TR') btn = btn.parentNode;
        var newTr = btn.parentNode.insertBefore(btn.cloneNode(true),btn.nextSibling);
        thisChilds = newTr.getElementsByTagName('td');
        for (var i = 0; i < thisChilds.length; i++)
        {
          if (thisChilds[i].className == 'files') thisChilds[i].innerHTML = '<input size="32" name="att[]" class=input type="file">';
        }
      }
    }
    //-->
    </script>
    <?php
      
    // Обработчик HTML-формы
      // Загружаем все файлы на сервер
      
    for($i 0$i count($_FILES['att']['name']); $i++)
      {
        
    // Перемещаем файл из временной директории сервера в
        // директорию /files Web-приложения
        
    if (copy($_FILES['att']['tmp_name'][$i], "files/".$_FILES['att']['name'][$i]))
        {
          
    // Уничтожаем файл во временной директории
          
    unlink($_FILES['att']['tmp_name'][$i]);
          
    // Изменяем права доступа к файлу
          
    chmod("files/".$_FILES['att']['name'][$i], 0644);
        }
      }

      
    // Осуществляем автоматическую перезагрузку страницы
      // если содержимое суперглобального массива $_POST
      // не является пустым
      
    if(!empty($_POST))
      {
        echo 
    "<HTML><HEAD>
                <META HTTP-EQUIV='Refresh' CONTENT='0; URL="
    .$_SERVER['PHP_SELF']."'>
              </HEAD></HTML>"
    ;
      }
    ?>