Portada » Lenguaje PHP » Cómo subir archivos con PHP al servidor

Cómo subir archivos con PHP al servidor

Cómo subir archivos con PHP al servidor. Siempre cuando estemos trabajando en un sitio web y/o proyecto web nuestro usuario desea incorporar un sistema para subir archivos al servidor. Así que pensando en este detalle a continuación aprenderemos a crear un módulo para subir archivos. Para lograr nuestro cometido usaremos la función move_uploaded_file(). Buscamos en la página oficial del PHP

Descripción de la función

bool move_uploaded_file ( string $filename , string $destination )

En este pequeño articulo veremos cómo podemos realizar una carga de archivos en PHP a nuestro servidor, esta excelente función es de gran utilidad para subir ficheros, sin embargo, no todo es muy elegante, ya que requiere de mucho cuidado, por lo tanto, es una entrada fehaciente de los hackers, proteger y limitar nuestras subidas es prioridad, de este tema de seguridad ya hablaremos en otro artículo:

Cómo subir archivos con PHP al servidor

Ejemplo #1 Subida de archivos

Necesitaremos 2 ficheros y una carpeta para hacer funcionar este ejemplo:

  • Crear una carpeta en nuestro servidor, en este ejemplo colocaremos «archivos». Es la carpeta donde se subirán los archivos.
  • Un archivo (cargar.html), es en donde estará nuestro formulario.
  • Un archivo (upload.php), Donde albergara los códigos PHP para subir los ficheros.

Código de cargar.html:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Enviar un Archivo con PHP</title>
<style type="text/css">
*{ font-family:Segoe, "Segoe UI", "DejaVu Sans", "Trebuchet MS", Verdana, sans-serif}
.main{ margin:auto; border:1px solid #7C7A7A; width:40%; text-align:left; padding:30px; background:#85c587}
input[type=submit]{ background:#6ca16e; width:100%;
    padding:5px 15px; 
    background:#ccc; 
    cursor:pointer;
	font-size:16px;
}
</style>
</head>

<body bgcolor="#bed7c0">
<div class="main">
<h1>Enviar un Archivo</h1>
<br>
<form enctype="multipart/form-data" action="upload.php" method="POST">
    <input type="hidden" name="MAX_FILE_SIZE" value="512000" />
   <p> Enviar mi archivo: <input name="subir_archivo" type="file" /></p>
   <p> <input type="submit" value="Enviar Archivo" /></p>
</form>
</div>
</body>
</html>
Subir archivo al servidor con php
Subir archivo al servidor con php

Código de upload.PHP:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Procesando el archivo enviado</title>
<style type="text/css">
*{ font-family:Segoe, "Segoe UI", "DejaVu Sans", "Trebuchet MS", Verdana, sans-serif}
.main{ margin:auto; border:1px solid #7C7A7A; width:50%; text-align:left; padding:30px; background:#85c587}
input[type=submit]{ background:#6ca16e; width:100%;
    padding:5px 15px; 
    background:#ccc; 
    cursor:pointer;
	font-size:16px;
   
}
table td{ padding:5px;}
</style>
</head>

<body bgcolor="#bed7c0">
<div class="main">
<h1>Subir archivo con PHP:</h1>
<?php
$directorio = 'archivos/';
$subir_archivo = $directorio.basename($_FILES['subir_archivo']['name']);
echo "<div>";
if (move_uploaded_file($_FILES['subir_archivo']['tmp_name'], $subir_archivo)) {
      echo "El archivo es válido y se cargó correctamente.<br><br>";
	   echo"<a href='".$subir_archivo."' target='_blank'><img src='".$subir_archivo."' width='150'></a>";
    } else {
       echo "La subida ha fallado";
    }
    echo "</div>";
?>
<br>
<div style="border:1px solid #000000; text-transform:uppercase">  
<h3 align="center"><div align="center"><a href="cargar.html">Volver </a></div></h3></div>

 
</div>
	</body>
</html>

El resultado al intentar subir un archivo nos mostrará la siguiente ventana:

Archivo subido correctamente php
Archivo subido correctamente php
Cómo subir archivos con PHP
Cómo subir archivos con PHP

Espero que esta breve explicación les sirva a todos ustedes, saludos a la distancia. Bueno, dejare un enlace para que se descarguen los archivos donde podrás descargar tus archivos.

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuarlo!

Promedio de puntuación 0 / 5. Recuento de votos: 0

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

20 comentarios en “Cómo subir archivos con PHP al servidor”

  1. Me pasa lo mismo que muchos comentarios los archivos suben y se guardan en el directorio correspondientes peroo… no se abren luego, se ven como si estuviesen dañados o sin permisos suficientes

  2. Y esos errores ?

    Warning: Undefined array key «uploadedFile» in /home/lanacionalcajama/public_html/pruebas/upload.php on line 8

    Warning: Trying to access array offset on value of type null in /home/lanacionalcajama/public_html/pruebas/upload.php on line 8

    1. Hola Danny

      El script ha sido testeado en PHP 8 y localhost con PHP 8 y funciona muy bien, seria genial que comentaras que versión de PHP estas usando.

      Por otro lado, tambien verifica que la carga de archivo sea superior a 2mb y aumentar el tiempo de ejecucion del PHP.

      Saludos

    1. Hola Ronald

      El script funciona en localhost y tambien en un servidor de producción, lo acabo de probar y sin problemas con PHP 8

      Verifica que la carpeta de destino exista en su servidor (archivos)

      saludos.

      1. Gracias, si, ya funciona, sin embargo, luego que copia bien, los archivos que subo, ya en carpeta servidor, no permite ni abrirlos ni borrarlos. Me puede, por favor, indicar qué pudo pasar. Gracias

          1. Hola Joel

            He testeado en localhost y en servidor web de internet y funciona muy bien con PHP8

            Es preciso que verifique su php la carga maxima, generalmente suele ser 2mb y quiza por ahi subio un archivo dañado.

            En cargar.html puede eliminar esta linea:

            < input type=hidden name=MAX_FILE_SIZE value=512000 >

            Para evitar estricciones de carga.

            Espero haber ayudado, saludos

  3. Serias tan amable de poder solucionar el problema de limite de cargar archivo.. es decir solo me permite cargar archivos de 5 MB y yo quisiera cargar un archivo de por lo menos 100 MB y si logras solucionar este problema te voy a AMAR de por vida.. un saludo desde Croacia

  4. Buenísimos hermano, son orientaciones que me ayudan mucho en mi trabajo, escuela primaria, donde atiendo niños de 4to a 6to grado… Dios te bendiga!!!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll al inicio
Esta web utiliza cookies propias para su correcto funcionamiento. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos.
Privacidad