Actualizado el domingo, 19 junio, 2016
Sencillo ejemplo de formulario para subir archivos a tu web. Consta de dos archivos, index.php y upload.php. Recuerda que debes configurar el archivo upload.php y crear una carpeta en tu server para tus uploads con permisos 777. La configuración de upload.php es tan sencilla como:
- Line 3 – Carpeta de uploads
- Line 4 – El tamaño máximo del archivo a subir (en bites)
- Line 5 – Las extensiones permitidas a subir (una coma para separarlas)
- Line 6 – Permitir sobreescritura (on o off)
- Line 41-El mensaje que aparecerá cuando el archivo haya sido subido. Podéis colocar la ruta de descarga, esta habrá de ser www.tudominio.com/directorio del archivo index.php/uploads/$filename($filename indica el nombre del archivo)
index.php
<form action="upload.php" method="post" enctype="multipart/form-data"> <b>Enviar un archivo: </b> <br> <input name="userfile" type="file"> <br> <input type="submit" value="Enviar"> </form>
upload.php
<? // Configuración $folder = "uploads/"; // Carpeta a la que subir los archivos $maxlimit = 5000000; // Máximo límite de tamaño (en bits) $allowed_ext = "rar,jpg"; // Extensiones permitidas (usad una coma para separarlas) $overwrite = "no"; // Permitir sobreescritura? (yes/no) $match = ""; $filesize = $_FILES['userfile']['size']; // toma el tamaño del archivo $filename = strtolower($_FILES['userfile']['name']); // toma el nombre del archivo y lo pasa a minúsculas if(!$filename || $filename==""){ // comprueba si no se ha seleccionado ningún archivo $error = "- Ningún archivo selecccionado para subir.<br>"; }elseif(file_exists($folder.$filename) && $overwrite=="no"){ // comprueba si el archivo existe ya $error = "- El archivo <b>$filename</b> ya existe<br>"; } // comprobar tamaño de archivo if($filesize < 1){ // el archivo está vacío $error .= "- Archivo vacío.<br>"; }elseif($filesize > $maxlimit){ // el archivo supera el máximo permitido $error .= "- Este archivo supera el máximo tamaño permitido.<br>"; } $file_ext = preg_split("/\./",$filename); $allowed_ext = preg_split("/\,/",$allowed_ext); foreach($allowed_ext as $ext){ if($ext==$file_ext[1]) $match = "1"; // Permite el archivo } // Extensión no permitida if(!$match){ $error .= "- Este tipo de archivo no está permitido: $filename<br>"; } if($error){ print "Se ha producido el siguiente error al subir el archivo:<br> $error"; // Muestra los errores }else{ if(move_uploaded_file($_FILES['userfile']['tmp_name'], $folder.$filename)){ // Sube el archivo print "<b>$filename</b> se ha subido correctamente!"; // Mensaje de aviso, upload correcto }else{ print "Error! Puede que el tamaño supere el máximo permitido por el servidor. Inténtelo de nuevo."; // error } } ?> <form> <INPUT TYPE="button" VALUE="Atrás" onClick="history.back()"> </form>
$folder = «uploads/»; // Carpeta a la que subir los archivos
pregunta y si quisiera que el nombre de la carpeta destino fuera ingresado por input type=text , o por algun metodo de generacion apartir de algun dato externo como un $cad de manera aleatoria, como ingresaria esto para que el codigo fuera correcto
gracias