varios validar subir subida seleccionar para multiples ejemplo crear carpeta archivos archivo php file-upload

validar - subir multiples archivos php mysql



Carga de archivos mĂșltiples en php (13)

Quiero cargar varios archivos y almacenarlos en una carpeta, obtener la ruta y almacenarla en la base de datos ... Cualquier buen ejemplo que buscó al cargar varios archivos ...

Nota: Los archivos pueden ser de cualquier tipo ...



Aquí hay una función que escribí que devuelve una matriz $_FILES más comprensible.

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; }


Buen enlace en:

La carga de un solo archivo PHP con una explicación básica variada .

Cargar archivo PHP con la Validación

Carga múltiple de archivos PHP con validación Haga clic aquí para descargar el código fuente

PHP / jQuery Carga de archivos múltiples con ProgressBar y validación (Haga clic aquí para descargar el código fuente)

Cómo cargar archivos en PHP y almacenar en la base de datos MySql (Haga clic aquí para descargar el código fuente)

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, "); } }

y debes verificar tu código 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>

Buen enlace en:

La carga de un solo archivo PHP con una explicación básica variada .

Cargar archivo PHP con la Validación

Carga múltiple de archivos PHP con validación Haga clic aquí para descargar el código fuente

PHP / jQuery Carga de archivos múltiples con ProgressBar y validación (Haga clic aquí para descargar el código fuente)

Cómo cargar archivos en PHP y almacenar en la base de datos MySql (Haga clic aquí para descargar el código fuente)


Ejecuto el bucle Foreach con elemento de error, se parece a

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"; } }


Múltiples archivos pueden ser seleccionados y luego cargados usando el
<input type=''file'' name=''file[]'' multiple>
El script de ejemplo php que realiza la carga:

<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>

Los archivos seleccionados se reciben como una matriz con

$_FILES[''file''][''name''][0] almacenando el nombre del primer archivo.
$_FILES[''file''][''name''][1] almacenando el nombre del segundo archivo.
y así.


No es tan diferente de cargar un archivo - $_FILES es una matriz que contiene todos los archivos cargados.

Hay un capítulo en el manual de PHP: carga de múltiples archivos

Si desea habilitar múltiples cargas de archivos con una fácil selección al final del usuario (seleccionando múltiples archivos a la vez en lugar de completar los campos de carga) eche un vistazo a SWFUpload . Sin embargo, funciona de forma diferente a un formulario normal de carga de archivos y requiere Flash para funcionar. SWFUpload se ha quedado obsoleto junto con Flash. Verifique las otras respuestas más nuevas para el enfoque ahora correcto.


Podemos facilitar la carga de múltiples archivos utilizando php utilizando el siguiente script.

Descargue el código fuente completo y vista previa

<?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/>''; } } } ?>


Sé que esta es una publicación anterior, pero algunas explicaciones adicionales pueden ser útiles para alguien que intenta cargar varios archivos ... Esto es lo que debe hacer:

  • El nombre de entrada debe definirse como una matriz, es decir, name="inputName[]"
  • El elemento de entrada debe tener multiple="multiple" o solo multiple
  • En su archivo PHP use la sintaxis "$_FILES[''inputName''][''param''][index]"
  • Asegúrese de buscar nombres de archivos vacíos y rutas , la matriz puede contener cadenas vacías . Use array_filter() antes de contar.

Aquí hay un ejemplo oscuro y sucio (que muestra solo el código relevante)

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 file path 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 } } }

Espero que esto ayude!


Simple es eso, simplemente cuente primero la matriz de archivos, luego en el ciclo while puede hacer esto fácilmente como

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

ahora tienes el número total de archivos correctos.

En while loop haz esto:

$i = 0; while($i<$count) { Upload one by one like we do normally $i++; }


este simple script funcionó para mí.

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


HTML

  1. crear div con id=''dvFile'' ;

  2. crear un button ;

  3. onclick de esa función de llamada de botón 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 }

De esta forma, puede agregar archivos / imágenes, tantos como sea necesario, y manejarlos a través del script php.


$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]); } }


<!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>