Я хочу загрузить несколько файлов и сохранить их в папке, а также получить путь и сохранить его в базе данных … Любой хороший пример, который вы искали для загрузки нескольких файлов …
Примечание. Файлы могут быть любого типа …
Я знаю, что это старый пост, но некоторые дополнительные объяснения могут быть полезны для тех, кто пытается загрузить несколько файлов … Вот что вам нужно сделать:
вот пример и грязный пример (показывающий только соответствующий код)
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 } } }
Надеюсь, это поможет!
Несколько файлов можно выбрать, а затем загрузить с помощью
<input type='file' name='file[]' multiple>
Пример скрипта php, который выполняет загрузку:
<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]
сохранение имени второго файла.
и так далее.
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-скрипт.
<!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>
Простым является то, что просто сначала подсчитайте массив файлов, затем в цикле while вы можете легко сделать это, как
$count = count($_FILES{'item_file']['name']);
теперь у вас есть общее количество файлов.
В цикле while сделайте так:
$i = 0; while($i<$count) { Upload one by one like we do normally $i++; }
в$i = 0; while($i<$count) { Upload one by one like we do normally $i++; }
Это не отличается от загрузки одного файла – $_FILES
– это массив, содержащий все и все загруженные файлы.
В руководстве по PHP есть глава: Загрузка нескольких файлов
Если вы хотите включить несколько загрузок файлов с легким выбором в конце пользователя (выбор нескольких файлов одновременно, а не заполнение полей загрузки), посмотрите SWFUpload . Он работает иначе, чем обычная форма загрузки файлов, и требует Flash для работы. SWFUpload был устаревшим вместе с Flash. Проверьте другие, более новые ответы для правильного подхода.
Вот функция, которую я написал, которая возвращает более понятный массив $_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; }
Я запускаю цикл 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"; } }
Просто наткнулся на следующее решение:
http://www.mydailyhacks.org/2014/11/05/php-multifile-uploader-for-php-5-4-5-5/
это готовый PHP Multi File Upload Script с формой, где вы можете добавить несколько входов и индикатор выполнения AJAX. Он должен работать сразу после распаковки на сервере …
Мы можем легко загрузить несколько файлов с помощью php, используя приведенный ниже скрипт.
Скачать полный исходный код и предварительный просмотр
<?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/>'; } } } ?>
$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]); } }
Хорошая ссылка на:
PHP Single File Uploading с различными базовыми объяснениями .
Загрузка файла 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 Single File Uploading с различными базовыми объяснениями .
Загрузка файла PHP с помощью проверки
Загрузка нескольких файлов PHP с проверкой Нажмите здесь, чтобы скачать исходный код
PHP / jQuery Загрузка нескольких файлов с помощью ProgressBar и проверки (нажмите здесь, чтобы загрузить исходный код)
Как загружать файлы в PHP и хранить в базе данных MySql (нажмите здесь, чтобы скачать исходный код)
этот простой скрипт работал для меня.
<?php foreach($_FILES as $file){ //echo $file['name']; echo $file['tmp_name'].'</br>'; move_uploaded_file($file['tmp_name'], "./uploads/".$file["name"]); } ?>