2013-09-04 3 views
3

Я начинаю работать в php и теперь выполняю проект в php. Я хочу загрузить изображения (максимум четыре файла изображений). Я использовал следующий код для загрузки изображений.Множественная загрузка файла в PHP - переименование файлов

<script type="text/javascript"> 
count=1; 
function add_file_field() 
{ 
if(count<4) 
{ 
var container=document.getElementById('file_container'); 
var file_field=document.createElement('input'); 
file_field.name='images[]'; 
file_field.type='file'; 
container.appendChild(file_field); 
var br_field=document.createElement('br'); 
container.appendChild(br_field); 
count++; 
} 
} 

</script> 



     <div id="file_container"> 
    <input name="images[]" type="file" id="file[]" /> 
<br /> 
    </div> 

     <br><a href="javascript:void(0);" onClick="add_file_field();">Add</a> 

Я использовал следующий код для одного файла upload.It работает

<?php 
if ((($_FILES["file"]["type"] == "image/gif") 
|| ($_FILES["file"]["type"] == "image/jpeg") 
|| ($_FILES["file"]["type"] == "image/pjpeg")) 
&& ($_FILES["file"]["size"] < 100000)) 
{ 
if ($_FILES["file"]["error"] > 0) 
{ 
echo "File Error : " . $_FILES["file"]["error"] . "<br />"; 
}else { 
echo "Upload File Name: " . $_FILES["file"]["name"] . "<br />"; 
echo "File Type: " . $_FILES["file"]["type"] . "<br />"; 
echo "File Size: " . ($_FILES["file"]["size"]/1024) . " Kb<br />"; 
echo "File Description:: ".$_POST['description']."<br />"; 

if (file_exists("images/".$_FILES["file"]["name"])) 
{ 
echo "<b>".$_FILES["file"]["name"] . " already exists. </b>"; 
}else 
{ 

$tmpname=$_FILES["file"]["tmp_name"]; 
$name=$_FILES["file"]["name"]; 
$new="jun.jpg"; 
rename($name,$new); 
move_uploaded_file($_FILES["file"]["tmp_name"],"images/".$new); 
    echo "Stored in: " . "images/" .$new."<br />"; 
?> 
Uploaded File:<br> 
<img src="images/<?php echo $new; ?>" alt="Image path Invalid" > 
<?php 
} 
} 
}else 
{ 
echo "Invalid file detail ::<br> file type ::".$_FILES["file"]["type"]." , file size:::  ".$_FILES["file"]["size"]; 
} 
?> 

Мне нужна помощь, чтобы изменить этот код, чтобы загрузить максимум 4 изображений. Можно ли переименовать функцию, чтобы переименовать выбранный файл для загрузки при переходе в указанную папку? но он показывает ошибку

Пожалуйста, помогите мне

ответ

2
<?php 


if(isset($_POST['submit'])) 
{ 

    $count=count($_FILES["images"]["name"]); 


for($i=0;$i<$count;$i++) 
{ 
    if ((($_FILES["images"]["type"][$i] == "image/gif") 
|| ($_FILES["images"]["type"][$i] == "image/jpeg") 
|| ($_FILES["images"]["type"][$i] == "image/pjpeg")) 
&& ($_FILES["images"]["size"][$i] < 100000)) 
{ 

if ($_FILES["images"]["error"][$i] > 0) 
{ 
echo "File Error : " . $_FILES["images"]["error"][$i] . "<br />"; 
    } 
    else 
{ 
    echo "Upload File Name: " . $_FILES["images"]["name"][$i] . "<br />"; 
echo "File Type: " . $_FILES["images"]["type"][$i] . "<br />"; 
    echo "File Size: " . ($_FILES["images"]["size"][$i]/1024) . " Kb<br />"; 

    if (file_exists("public/images/".$_FILES["images"]["name"][$i])) 
    { 
    echo "<b>".$_FILES["images"]["name"][$i] . " already exists. </b>"; 
    } 
    else 
    { 
    move_uploaded_file($_FILES["images"]["tmp_name"][$i] ,"public/images/".    $_FILES["images"]["name"][$i]); 
    echo "Stored in: " . "public/images/" . $_FILES["images"]["name"][$i] ."<br />"; 
    ?> 
    Uploaded File:<br> 
    <img src="public/images/<?php echo $_FILES["images"]["name"][$i] ; ?>" alt="Image path Invalid" > 
    <?php 
    } 
    } 
    }else 
{ 
    echo "Invalid file detail ::<br> file type ::".$_FILES["images"]["type"][$i] ." , file size::: ".$_FILES["images"]["size"][$i] ; 
    } 
} 
    }?> 

изображение закачанный используя для loop..foreach показывал ошибку

3

Вы должны разрешить множественный выбор файлов в вашем файле ввода, так что вам не нужно, чтобы добавить новый вход снова и снова:

<input id="file" type="file" name="images[]" multiple>

После отправки формы вы можете перебрать $_FILES массив так:

foreach($_FILES['images'] as $file) { 
    //your code here --> replace $_FILES['file'] with $file 
} 

Надеюсь, это поможет.

+0

Я пробовал ... Но это не работает. – user2745698

+0

Что означает «не работает»? –

+0

Я изменил свой код, потому что вы должны использовать 'images' как ключ. Если это не поможет описать вашу проблему. –

0

Я один пример, который работает, я думаю, что это поможет вам

<form action="" method="POST" enctype="multipart/form-data"> 
    <input type="file" name="files[]" /> 
    <input type="submit"/> 
</form> 

В PHP

if(isset($_FILES['files'])){ 
    $errors= array(); 
    foreach($_FILES['files']['tmp_name'] as $key => $tmp_name){ 
     $file_name = $key.$_FILES['files']['name'][$key]; 
     $file_size =$_FILES['files']['size'][$key]; 
     $file_tmp =$_FILES['files']['tmp_name'][$key]; 
     $file_type=$_FILES['files']['type'][$key]; 
     if($file_size > 2097152){ 
      $errors[]='File size must be less than 2 MB'; 
     }  
     $query="INSERT into upload_data (`USER_ID`,`FILE_NAME`,`FILE_SIZE`,`FILE_TYPE`) VALUES('$user_id','$file_name','$file_size','$file_type'); "; 
     $desired_dir="user_data"; 
     if(empty($errors)==true){ 
      if(is_dir($desired_dir)==false){ 
       mkdir("$desired_dir", 0700);  // Create directory if it does not exist 
      } 
      if(is_dir("$desired_dir/".$file_name)==false){ 
       move_uploaded_file($file_tmp,"$desired_dir/".$file_name); 
      }else{         // rename the file if another one exist 
       $new_dir="$desired_dir/".$file_name.time(); 
       rename($file_tmp,$new_dir) ;    
      } 
     mysql_query($query);   
     }else{ 
       print_r($errors); 
     } 
    } 
    if(empty($error)){ 
     echo "Success"; 
    } 
} 
+0

foreach не работал. Я использовал для цикла, а не – user2745698

1

Вот пример многофайловой загрузки в PHP

https://github.com/hemantrai88/html5-php_multi-file-upload

+0

, чтобы понять вопрос, прежде чем отвечать на вопросы и читать ответы на часто задаваемые вопросы, прежде чем отвечать, только обмен ссылками - это не очень хороший ответ, вы описываете, что там происходит, чтобы рассматривать это как ответ. – Hamad

+0

Пример довольно понятен. Он использует PHP и HTML для загрузки нескольких файлов с базовым интерфейсом, отображающим все файлы, перечисленные для загрузки, и их статус загрузки после отправки формы. Могут потребоваться незначительные изменения, чтобы заставить его работать для любых пользовательских требований. По умолчанию этот пример лучше всего подходит для всплывающих форм загрузки. – Hemant

Смежные вопросы