Como subir imagenes al servidor con php

Como subir imagenes al servidor con php

El dia de hoy vamos a crear un ejemplo bastante solicitado en foros de php, como subir imagenes al servidor con php. Una tarea tan rutinaria en la mayoría de las aplicaciones web hoy en día desarrolladas en este lenguaje de programación no debería de ser algo difícil, simplemente es cosa de establecer algunas limitaciones y recibir el archivo, en este caso una imagen, el día de hoy me topo con esa necesidad y no dejo de aprovechar para compartirlo con todos ustedes.

En resumen ocuparemos de 3 cosas:

  1. Un formulario de subida en html
  2. Un script que procese la petición
  3. Una pagina html que muestre al usuario que se ha subido con éxito su imagen.

Este proyecto sobre como subir imagenes al servidor con php utiliza XAMPP para el servidor apache y php de forma local, también hemos creado nuestra carpeta de proyecto llamada uploadimages y dentro irán los 3 archivos antes mencionados ademas de una carpeta llamada imágenes que almacenara las imágenes subidas por el usuario, comencemos!

Formulario de Subida

upload.php

<?php

$directory_self = str_replace(basename($_SERVER['PHP_SELF']), '', $_SERVER['PHP_SELF']);

$uploadHandler = 'http://' . $_SERVER['HTTP_HOST'] . $directory_self . 'procesar.php';

$max_file_size = 30000;

?>

<html lang="es"> 
<head> 
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> 

<link rel="stylesheet" type="text/css" href="domxml_xslt_stylesheet_doc(xsl_doc).css"> 

<title>Formulario de subida</title> 

</head> 

<body> 

<form id="Upload" action="<?php echo $uploadHandler ?>" enctype="multipart/form-data" method="post"> 

<h1> 
Formulario de Subida
</h1> 

<p> 
<input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $max_file_size ?>"> 
</p> 

<p> 
<label for="file">Seleccionar Imagen: </label> 
<input id="file" type="file" name="file"> 
</p> 

<p> 
<input id="submit" type="submit" name="submit" value="Subir Imagen"> 
</p> 

</form> 


</body>

</html>

Script que procesa la peticion

procesar.php

<?php

$directory_self = str_replace(basename($_SERVER['PHP_SELF']), '', $_SERVER['PHP_SELF']);

$uploadsDirectory = $_SERVER['DOCUMENT_ROOT'] . $directory_self . 'imagenes/';

$uploadForm = 'http://' . $_SERVER['HTTP_HOST'] . $directory_self . 'upload.php';

$uploadSuccess = 'http://' . $_SERVER['HTTP_HOST'] . $directory_self . 'success.php';

$fieldname = 'file';

$errors = array(1 => 'php.ini tamaño de archivo excedido', 
2 => 'tamaño excedido en la imagen', 
3 => 'solo se subio la imagen parcialmente', 
4 => 'ningun archivo fue subido');

isset($_POST['submit']) 
or error('el formulario es necesario', $uploadForm);

($_FILES[$fieldname]['error'] == 0) 
or error($errors[$_FILES[$fieldname]['error']], $uploadForm); 

@is_uploaded_file($_FILES[$fieldname]['tmp_name']) 
or error('no es una subida http', $uploadForm); 

@getimagesize($_FILES[$fieldname]['tmp_name']) 
or error('solo esta permitido subir imagenes', $uploadForm); 

$now = time(); 
while(file_exists($uploadFilename = $uploadsDirectory.$now.'-'.$_FILES[$fieldname]['name'])) 
{ 
$now++; 
}

@move_uploaded_file($_FILES[$fieldname]['tmp_name'], $uploadFilename) 
or error('sin permisos en el directorio', $uploadForm); 

header('Location: ' . $uploadSuccess);

function error($error, $location, $seconds = 5) 
{ 
header("Refresh: $seconds; URL=upload.php"); 
echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"'.
'"http://www.w3.org/TR/html4/strict.dtd">'.
'<html lang="es">'.
' <head>'.
' <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">'.
' <link rel="stylesheet" type="text/css" href="stylesheet.css">' .
' <title>Error al subir</title>'.
' </head>'.
' <body>'.
' <div id="Upload">'.
' <h1>Codigo de error.</h1>'.
' <p>Un error a ocurrido: '.
' <span class="red">' . $error . '...</span>'.
' el formulario esta recargandose.</p>' .
' </div>'.
'</html>'; 
exit; 
}

?>

Pagina de Exito

success.php


¿Sabías que?

¿Necesitas hosting wordpress? WebEmpresa te ofrece un servicio super rápido, excelente soporte en español y certificado SSL gratuito:

WebEmpresa

<?php


?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
"http://www.w3.org/TR/html4/strict.dtd">

<html lang="es"> 
<head> 
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> 

<link rel="stylesheet" type="text/css" href="stylesheet.css"> 

<title>Exitosamente subida!</title> 

</head> 

<body> 

<div id="Upload"> 
<h1>File upload</h1> 
<p>Felicidades! has subido tu imagen</p> 
</div> 

</body>

</html>

El resultado es el siguiente ( con un poco de css )..

como-subir-imagenes-al-servidor-con-php-1 como-subir-imagenes-al-servidor-con-php-2 como-subir-imagenes-al-servidor-con-php-3

Descargar proyecto completo

Como subir imagenes al servidor con php

Clic para valorar esta información
[Total: 0 Promedio: 0]