Subir archivos a un servidor web no es nada del otro mundo, de hecho es algo muy sencillo de hacer, y podemos hacerlo utilizando una sencilla forma de HTML y un programa en PHP que guarde el archivo en donde nosotros queramos.
Lo primero que necesitaremos sera el archivo html donde tendremos la forma de subida.
El siguiente codigo representa esta forma. Lo que se tiene que hacer es crear una forma, establecer el parametro de “action” donde especificaremos el script php que guardara nuestro archivo, también el parametro “method” en el cual he seleccionado post, y “enctype”, que basicamente especifica que tipo de datos vamos a subir, esto es necesario.
Forma de subida en html
<!DOCTYPE html> <html> <head> </head> <body> <form action="file.php" method="post" enctype="multipart/form-data"> <input type="file" name="archivo" id="archivo"></input> <input type="submit" value="Subir archivo"></input> </form> </body> </html>
Recuerden especificar el “name” del archivo, el cual es necesario para poder encontrar el archivo en nuestro script PHP.
Del lado del servidor…
Ahora vamos con el PHP, es la parte mas importante ya que desde aqui accederemos a nuestro archivo y seremos capaces de ver sus propiedades, asi como de guardarlo en una ruta especifica. Para esto tenemos el arreglo bidimensional “$_FILES” donde se puede acceder al archivo y sus propiedades (como ‘error’, ‘name’,’tmp_name’).
Archivo PHP para controlar la subida del archivo
if ($_FILES['archivo']["error"] > 0) { echo "Error: " . $_FILES['archivo']['error'] . "<br>"; } else { echo "Nombre: " . $_FILES['archivo']['name'] . "<br>"; echo "Tipo: " . $_FILES['archivo']['type'] . "<br>"; echo "Tamaño: " . ($_FILES["archivo"]["size"] / 1024) . " kB<br>"; echo "Carpeta temporal: " . $_FILES['archivo']['tmp_name']; /*ahora co la funcion move_uploaded_file lo guardaremos en el destino que queramos*/
move_uploaded_file($_FILES['archivo']['tmp_name'],
"subidas/" . $_FILES['archivo']['name']);
A continuación un pequeño video tutorial de como hacer este ejercicio
Muy buen aporte de este proyecto amigo, pero como puedo hacer para subir archivos de extencion .docs o .xlsx con este mismo codigo?
lo eh probado tal cual y puedes subir pdf, imagenes, documentos word o excel, incluso desde el movil. suerte.
Since the admin of this site is working, no question very soon it will be well-known, due
to its feature contents.
[…] 1 min ago 0 View Share Tweet Pinit Google+ Email (adsbygoogle = window.adsbygoogle || […]
buenas tardes, mira lo que pasa es que el codigo me funciona muy bien pero localmente ya a la hora de usarlo en un servodor muestra el mensaje y todo pero no sube les agradeceria la ayuda ya ni se que hacer gracias
me pasa lo mismo, solo funciona localmente y en el hosting nada todo en blanco.
Haz checado los permisos de lectura y escritura en la carpeta donde vas a subir tus archivos?
TU host no tiene configurado ftp en modo (%) todos los host se deben dr los permisos a instancias externas.
verifica el tipo de servicio que tienes configurado, asi mismo el tipo de documetos que acepta tu servicio host
hola, intento subir 15 archivos, pero me reconoce 10 … raro no?
La subida de archivos es un tema a veces complejo, y mira que el código en php es muy básico y sencillo. Lo has probado en Local o en Host? Es que hay restricciones de tamaño que puedes modificar en el archivo php.ini o en la configuración del host. Si los archivos superan el tamaño máximo permitido, como 2mb, no se subirán. Además, prueba a ampliar el codigo y añadir un control de errores.
Muchísimas gracias por tu ayuda, funciona de mil maravillas el código!!!
Hola buenos dias, donde podria contactarte para la realizacion de un trabajo?
Espero me puedas apoyar.
Hola jorge gracias pro el tutorial una duda me da error al correrlo
mira :
Notice: Undefined index: archivo in C:\xampp\htdocs\xtream\file.php on line 4
no entiendo por que si es el nombre que le puse al name del input si me pudieras ayudar te lo agradeceria Saludos!!
Usa diagonales normales
Hola Jorge.
Me parece muy completa tu presentación. Estoy tratando de subir un archivo. el formulario funciona bien, es decir puedo selecionar el archivo a subir, pero el php no sube nada. Muestra los títulos, pero no el archivo ni el tamaño.
No genera error. Habrá que hacer algo en el php.ini? trabajo sobre linux con xampp y mozilla.
Gracias.
hola sabes tengo el siguiente problema, contrate un espacio en amazon cloud drive pero no tiene la opcion de crearte una carpeta compartida en el pc y luego zincronizar los archivos para levantarlos al portal. es por eso que quisiera saber si tienes alguna alternativa como para realizar un script que tome un archivo y lo suba directo al espacio que tengo contratado con amazon..
quiza es demasiado tarde para contestar ese comentario, pero, descargate elFilezilla, es un cliente FTP, con el te conectas al servicio que tienes contratado y puedes subir tus archivos y levantar la pagina.
Excelente todo funciona muy bien y en la ruta que yo quiera =)
quisiera saber como hacer un formulario de consulta para poder descargar o vizualizar archivos subidos en una carpeta x! de mi sitio web
cuanto es lo maximo a subir
Eso se especifica en el archivo .ini de php.
de cuanto es lo maximo
hola que tal gracias pòr el turorial 2 preguntas ¿como hago para buscar los archivos ya subidos dentro de la misma web? y por ende ¿como hago para visualizarlos dentro de la misma web?
Hola que tal ya hice todo y no me manda error pero al acceder a la carpeta que debe contener el archivo esta vacía (todo esto lo hice en un servidor web). Que debo hacer o que me falta.
Gracias
habia un error de sintaxis estaban unas comillas dobles donde deben haber comillas simples y faltaba el cierre de una lave y el cierre del php.
file.php:
0)
{
echo “Error: ” . $_FILES[‘archivo’][‘error’] . “”;
}
else
{
echo “Nombre: ” . $_FILES[‘archivo’][‘name’] . “”;
echo “Tipo: ” . $_FILES[‘archivo’][‘type’] . “”;
echo “Tamaño: ” . ($_FILES[“archivo”][“size”] / 1024) . ” kB”;
echo “Carpeta temporal: ” . $_FILES[‘archivo’][‘tmp_name’];
/*ahora co la funcion move_uploaded_file lo guardaremos en el destino que queramos*/
move_uploaded_file($_FILES[‘archivo’][‘tmp_name’],
‘subidas/’.$_FILES[‘archivo’][‘name’]);
}
?>
Lolamento pero todo ese codigo PHP esta muy mal
Sube bien el archivo, pero las imagenes no se ven correctament…
Buen aporte no tenia idea de como hacer esto
Eres un teso. Orgullo colombiano hey
hola no me funciona por favor ayúdame copie tu código exactamente igual tengo instalado xamp por lo que cree en la carpeta htdocs una carpeta llamada cantantes y dentro de eso cree el HTML mas el php mas la carpeta subidas pero no me funciona por fa me puedes ayudar he estado muchos días con esto y no lo logro saludos de chile
a mi me pasa lo mismo y me sale error 500
Igual, copie tal cual, con el Else cerrado, y creando los 2 archivos y no funciona, al dar clir en el boton subir archivo me muestra el codigo del File.php..ayuda gracias
como podria subir archivos a otro servidor (linux) que no sea el localhost, he tratado de hacerlo pero no funciona.
Excelente , aporte. Muy bien explicado.
Felicitaciones
buen dia jorge queria saber como puedo hacer subir archivos mayores a 5mb espero tu respuesta gracias
Como se llama el editor, ya que te muestra los codigos de php. Existira para otros lenguajes de programacion?
Se llama sublime text, y si hay un editor que mas que editor es un IDE para java y lenguajes de programación web se llama Netbeans es muy muy bueno
Saludos!
intente algo así pero solo lo sube a mi servidor localhost ya cuando intento subirlo a mi servidor web no lo hace por que?
Oooh! Me has arreglado una mañana de perros que llevo intentando subir archivos. Mi problema era que no había añadido el multipart/form-data!
A seguir así y gracias!
Que Pena contigo, ya lo Solucione, el problema que me estaba presentando es porque faltaba cerrar el ELSE, como copie tu código tal cual de la pagina y me confié, no vi que le faltaba la llave para cerrar el ELSE, era solo eso… y la carpeta subidas, la creedentro de mi proyecto de NetBeans y Listo.
Veo que lo estas haciendo en Linux, yo lo estoy realizando en Windows y o se donde crear la carpeta SUBIDAS… y me esta generando error de sintaxis
Crea la carpeta “subidas” donde hayas puesto el form.html y el file.php