Загрузка нескольких файлов в php

Вопрос:Я хочу загрузить несколько файлов и сохранить их в папке, а также получить путь и сохранить его в базе данных... Любой хороший пример, который вы искали для загрузки нескольких файлов... Примечание. Файлы могут быть любого типа... Ответ №1Я знаю, что это старый пост, но некоторые дополнительные объяснения могут быть полезны для тех, кто пытается загрузить

Вопрос:

Я хочу загрузить несколько файлов и сохранить их в папке, а также получить путь и сохранить его в базе данных… Любой хороший пример, который вы искали для загрузки нескольких файлов…

Примечание. Файлы могут быть любого типа…

Ответ №1

Я знаю, что это старый пост, но некоторые дополнительные объяснения могут быть полезны для тех, кто пытается загрузить несколько файлов… Вот что вам нужно сделать:

  • Имя входа должно быть определено как массив i.e.
    name= “InputName []”
  • Элемент ввода должен иметь multiple = “multiple” или просто несколько
  • В вашем файле PHP используйте синтаксис “$ _ FILES [‘inputName’] [‘param’] [index]”
  • Обязательно найдите имена и пути файлов, в массиве могут быть пустые строки. Используйте array_filter() перед подсчетом.

здесь приведен пример и грязный пример (показывающий только соответствующий код)

HTML:

<input name=»upload[]» type=»file» multiple=»multiple» />

PHP:

//$files = array_filter($_FILES[‘upload’][‘name’]); something like that to be used before processing files. // Count # of uploaded files in array $total = count($_FILES[‘upload’][‘name’]); // Loop through each file for($i=0; $i<$total; $i++) { //Get the temp file path $tmpFilePath = $_FILES[‘upload’][‘tmp_name’][$i]; //Make sure we have a filepath if ($tmpFilePath != «»){ //Setup our new file path $newFilePath = «./uploadFiles/» . $_FILES[‘upload’][‘name’][$i]; //Upload the file into the temp dir if(move_uploaded_file($tmpFilePath, $newFilePath)) { //Handle other code here } } }

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

Ответ №2

Несколько файлов можно выбрать, а затем загрузить с помощью
<input type=’file’ name=’file[]’ multiple>
Образец php script, который выполняет загрузку:

<html> <title>Upload</title> <?php session_start(); $target=$_POST[‘directory’]; if($target[strlen($target)-1]!=’/’) $target=$target.’/’; $count=0; foreach ($_FILES[‘file’][‘name’] as $filename) { $temp=$target; $tmp=$_FILES[‘file’][‘tmp_name’][$count]; $count=$count + 1; $temp=$temp.basename($filename); move_uploaded_file($tmp,$temp); $temp=»; $tmp=»; } header(«location:../../views/upload.php»); ?> </html>

Выбранные файлы принимаются как массив с

$_FILES[‘file’][‘name’][0] сохранение имени первого файла.
$_FILES[‘file’][‘name’][1] сохранение имени второго файла.
и т.д.

Ответ №3

HTML

  • создать div с id=’dvFile’;

  • создать button;

  • onclick этой функции вызова кнопки add_more()

JavaScript

function add_more() { var txt = «<br><input type=»file» name=»item_file[]»>»; document.getElementById(«dvFile»).innerHTML += txt; }

PHP

if(count($_FILES[«item_file»][‘name’])>0) { //check if any file uploaded $GLOBALS[‘msg’] = «»; //initiate the global message for($j=0; $j < count($_FILES[«item_file»][‘name’]); $j++) { //loop the uploaded file array $filen = $_FILES[«item_file»][‘name’][«$j»]; //file name $path = ‘uploads/’.$filen; //generate the destination path if(move_uploaded_file($_FILES[«item_file»][‘tmp_name’][«$j»],$path)) { //upload the file $GLOBALS[‘msg’] .= «File# «.($j+1).» ($filen) uploaded successfully<br>»; //Success message } } } else { $GLOBALS[‘msg’] = «No files found to upload»; //No file upload message }

Таким образом вы можете добавить файлы/изображения, сколько потребуется, и обработать их через php script.

Ответ №4

Это не то, что отличается от загрузки одного файла – $_FILES – это массив, содержащий все и все загруженные файлы.

В руководстве по PHP есть глава: Загрузка нескольких файлов

Если вы хотите включить несколько загрузок файлов с легким выбором в конце пользователя (сразу выберите несколько файлов вместо заполнения полей загрузки), посмотрите SWFUpload. Он работает иначе, чем обычная форма для загрузки файлов, и требуется Flash для работы. SWFUpload был устаревшим вместе с Flash. Проверьте другие, более новые ответы для правильного подхода.

Ответ №5<!DOCTYPE html PUBLIC «-//W3C//DTD XHTML 1.0 Transitional//EN» «http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd»> <html xmlns=»http://www.w3.org/1999/xhtml»> <head> <meta http-equiv=»Content-Type» content=»text/html; charset=utf-8″ /> <title>Untitled Document</title> </head> <body> <?php $max_no_img=4; // Maximum number of images value to be set here echo «<form method=post action=» enctype=’multipart/form-data’>»; echo «<table border=’0′ width=’400′ cellspacing=’0′ cellpadding=’0′ align=center>»; for($i=1; $i<=$max_no_img; $i++){ echo «<tr><td>Images $i</td><td> <input type=file name=’images[]’ class=’bginput’></td></tr>»; } echo «<tr><td colspan=2 align=center><input type=submit value=’Add Image’></td></tr>»; echo «</form> </table>»; while(list($key,$value) = each($_FILES[‘images’][‘name’])) { //echo $key; //echo «<br>»; //echo $value; //echo «<br>»; if(!empty($value)){ // this will check if any blank field is entered $filename =rand(1,100000).$value; // filename stores the value $filename=str_replace(» «,»_»,$filename);// Add _ inplace of blank space in file name, you can remove this line $add = «upload/$filename»; // upload directory path is set //echo $_FILES[‘images’][‘type’][$key]; // uncomment this line if you want to display the file type //echo «<br>»; // Display a line break copy($_FILES[‘images’][‘tmp_name’][$key], $add); echo $add; // upload the file to the server chmod(«$add»,0777); // set permission to the file. } } ?> </body> </html> Ответ №6

Простым является то, что сначала подсчитайте массив файлов, затем в цикле while вы можете легко сделать это, например

$count = count($_FILES{‘item_file’][‘name’]);

теперь вы получили общее количество файлов.

В цикле while сделайте так:

$i = 0; while($i<$count) { Upload one by one like we do normally $i++; } Ответ №7

Вот функция, которую я написал, которая возвращает более понятный массив $_FILES.

function getMultiple_FILES() { $_FILE = array(); foreach($_FILES as $name => $file) { foreach($file as $property => $keys) { foreach($keys as $key => $value) { $_FILE[$name][$key][$property] = $value; } } } return $_FILE; } Ответ №8

Я запускаю цикл foreach с элементом ошибки, выгляжу как

foreach($_FILES[‘userfile’][‘error’] as $k=>$v) { $uploadfile = ‘uploads/’. basename($_FILES[‘userfile’][‘name’][$k]); if (move_uploaded_file($_FILES[‘userfile’][‘tmp_name’][$k], $uploadfile)) { echo «File : «, $_FILES[‘userfile’][‘name’][$k] ,» is valid, and was successfully uploaded.n»; } else { echo «Possible file : «, $_FILES[‘userfile’][‘name’][$k], » upload attack!n»; } } Ответ №9

Просто наткнулся на следующее решение:

это готовая загрузка файла PHP Multi Script с формой, в которой вы можете добавить несколько входов и индикатор выполнения AJAX. Он должен работать сразу после распаковки на сервере…

Ответ №10

Мы можем легко загрузить несколько файлов с помощью php, используя ниже script.

Загрузить полный исходный код и предварительный просмотр

<?php if (isset($_POST[‘submit’])) { $j = 0; //Variable for indexing uploaded image $target_path = «uploads/»; //Declaring Path for uploaded images for ($i = 0; $i < count($_FILES[‘file’][‘name’]); $i++) {//loop to get individual element from the array $validextensions = array(«jpeg», «jpg», «png»); //Extensions which are allowed $ext = explode(‘.’, basename($_FILES[‘file’][‘name’][$i]));//explode file name from dot(.) $file_extension = end($ext); //store extensions in the variable $target_path = $target_path . md5(uniqid()) . «.» . $ext[count($ext) — 1];//set the target path with a new name of image $j = $j + 1;//increment the number of uploaded images according to the files in array if (($_FILES[«file»][«size»][$i] < 100000) //Approx. 100kb files can be uploaded. && in_array($file_extension, $validextensions)) { if (move_uploaded_file($_FILES[‘file’][‘tmp_name’][$i], $target_path)) {//if file moved to uploads folder echo $j. ‘).<span id=»noerror»>Image uploaded successfully!.</span><br/><br/>’; } else {//if file was not moved. echo $j. ‘).<span id=»error»>please try again!.</span><br/><br/>’; } } else {//if file size and file type was incorrect. echo $j. ‘).<span id=»error»>***Invalid file Size or Type***</span><br/><br/>’; } } } ?> Ответ №11$property_images = $_FILES[‘property_images’][‘name’]; if(!empty($property_images)) { for($up=0;$up<count($property_images);$up++) { move_uploaded_file($_FILES[‘property_images’][‘tmp_name’][$up],’../images/property_images/’.$_FILES[‘property_images’][‘name’][$up]); } } Ответ №12

Хорошая ссылка на:

Загрузка одного файла PHP с использованием основного объяснения.

Загрузка файла PHP с помощью проверки

Загрузка нескольких файлов PHP с проверкой Нажмите здесь, чтобы загрузить исходный код

Загрузка нескольких файлов PHP/jQuery с помощью ProgressBar и проверки (нажмите здесь, чтобы загрузить исходный код)

Как загружать файлы в PHP и хранить в базе данных MySql (щелкните здесь, чтобы загрузить исходный код)

extract($_POST); $error=array(); $extension=array(«jpeg»,»jpg»,»png»,»gif»); foreach($_FILES[«files»][«tmp_name»] as $key=>$tmp_name) { $file_name=$_FILES[«files»][«name»][$key]; $file_tmp=$_FILES[«files»][«tmp_name»][$key]; $ext=pathinfo($file_name,PATHINFO_EXTENSION); if(in_array($ext,$extension)) { if(!file_exists(«photo_gallery/».$txtGalleryName.»/».$file_name)) { move_uploaded_file($file_tmp=$_FILES[«files»][«tmp_name»][$key],»photo_gallery/».$txtGalleryName.»/».$file_name); } else { $filename=basename($file_name,$ext); $newFileName=$filename.time().».».$ext; move_uploaded_file($file_tmp=$_FILES[«files»][«tmp_name»][$key],»photo_gallery/».$txtGalleryName.»/».$newFileName); } } else { array_push($error,»$file_name, «); } }

и вы должны проверить свой HTML-код

<form action=»create_photo_gallery.php» method=»post» enctype=»multipart/form-data»> <table width=»100%»> <tr> <td>Select Photo (one or multiple):</td> <td><input type=»file» name=»files[]» multiple/></td> </tr> <tr> <td colspan=»2″ align=»center»>Note: Supported image format: .jpeg, .jpg, .png, .gif</td> </tr> <tr> <td colspan=»2″ align=»center»><input type=»submit» value=»Create Gallery» id=»selectedButton»/></td> </tr> </table> </form>

Хорошая ссылка на:

Загрузка одного файла PHP с использованием основного объяснения.

Загрузка файла PHP с помощью проверки

Загрузка нескольких файлов PHP с проверкой Нажмите здесь, чтобы загрузить исходный код

Загрузка нескольких файлов PHP/jQuery с помощью ProgressBar и проверки (нажмите здесь, чтобы загрузить исходный код)

Как загружать файлы в PHP и хранить в базе данных MySql (щелкните здесь, чтобы загрузить исходный код)

Ответ №13

этот простой script работал у меня.

<?php foreach($_FILES as $file){ //echo $file[‘name’]; echo $file[‘tmp_name’].'</br>’; move_uploaded_file($file[‘tmp_name’], «./uploads/».$file[«name»]); } ?>

Оцените статью
Добавить комментарий