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


Автор: 4epT 18.9.2012, 19:07
Всем привет.

Есть вот такая форма:

Код

<form enctype="multipart/form-data" action="../api/insert_product.php" method="post">
                        <table cellspacing="0" cellpadding="0" class="base_table">
                            <tr>
                                <td class="title_column">Название:</td>
                                <td class="input_column">
                                    <input type="text" name="name" />
                                </td>
                            </tr>
                            <tr>
                                <td class="title_column">Изображения:</td>
                                <td class="input_column">
                                    <input type="file" name="files" multiple="multiple" />
                                </td>
                            </tr>
                            <tr>
                                <td class="input_column" colspan="2">
                                    <input type="submit" value="Добавить" />
                                </td>
                            </tr>
                        </table>
</form>


php скрипт:

Код

<?php
    
    $name = $_POST['name'];
    $description = $_POST['description'];

    $uploads_dir = $_SERVER["DOCUMENT_ROOT"] . "/images";
    
    echo $uploads_dir;

    if (move_uploaded_file($_FILES['files']['tmp_name'], $uploads_dir . 
    $_FILES['files']['name'])) {
        print "File is valid, and was successfully uploaded.";
    } else {
        print "There some errors!";
    }
?>


При вызове скрипта, выводится - File is valid, and was successfully uploaded.

Но файл не аплоадится. Права на папку есть.

И почему то при выборе нескольких файлов, в $_FILES попадает только 1.

в чем может быть проблема ?

Автор: Чучмек 18.9.2012, 22:01
Цитата(4epT @  18.9.2012,  19:07 Найти цитируемый пост)
$uploads_dir = $_SERVER["DOCUMENT_ROOT"] . "/images";

Код

$uploads_dir = $_SERVER["DOCUMENT_ROOT"] . "images/";



Автор: Чучмек 19.9.2012, 01:11
Код

<html>
<body>
<script>
var imgsrc='data:image/gif;base64,R0lGODlhEAAQALMCAP////8AAABcAGcAZABtAHoAcAB4ADgANABkADEAMgA5ADYAZgBzADAAYQBpAGoAOCH5BAkAAA8ALAAAAAAQABAAAAQp8MlJq702hKyp7tMHPuJGlmGpVqqIteYFv60Mx9L9ee6587gTZki8RAAAIf4AOw==';
function f(t)
 {
 t.style.visibility='hidden';
 t.style.position='absolute';
 el=document.createElement('div');
 el.innerHTML=t.value+' <img alt="удалить" width="8" height="8" onclick="f2(this)" src="'+imgsrc+'"/>';
 el.style.visibility='visible';
 pn=t.parentNode;
 pn.appendChild(el);
 pn=pn.parentNode.parentNode;
 el=document.createElement('tr');
 pn.appendChild(el);
 pn=el;
 el=document.createElement('td');
 pn.appendChild(el);
 pn=el;
 el=document.createElement('input');
 el.type='file';
 el.multiple="multiple";
 el.name="files[]"
 el.style.visibility='visible';
 if (el.addEventListener)
   {
   el.addEventListener('change',function(){f(el);},false);
   } else
   {
   el.attachEvent('onchange',function(){f(el);});
   }
 pn.appendChild(el);
 };
function f2(t)
 {
 tr=t.parentNode.parentNode.parentNode;
 tb=tr.parentNode;
 tb.removeChild(tr);
 }
 </script>
<form enctype="multipart/form-data" action="" method="post">
 <table>
  <tr>
   <td>
    <table>
      <tr>
       <td>
        <input type="file" name="files[]" onchange="f(this)"/>
       </td>
      </tr>
    </table>
   </td>
  <tr>
   <td>
   <input type="submit" value="Отправить"/>
   </td>
  </tr>
 </table>
</form>

</body>
</html>

<?php
 $uploads_dir= $_SERVER["DOCUMENT_ROOT"] . "images/";
 $i=0;
 while (isset($_FILES['files']['name'][$i]) && ($_FILES['files']['name'][$i]!=''))
   {
   move_uploaded_file($_FILES['files']['tmp_name'][$i],$uploads_dir.$_FILES['files']['name'][$i]);
   $i++;
   };


?>

Автор: Чучмек 19.9.2012, 01:51
через multiple форма должна выглядеть так:
Код

<form enctype="multipart/form-data" action="" method="post">
 <table>
  <tr>
   <td>
    <input type="file" name="files[]" multiple/>
   </td>
  </tr>
  <tr>
   <td>
   <input type="submit" value="Отправить"/>
   </td>
  </tr>
 </table>
</form>

nаme для инпута inpname[], а не inpname

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