¿Supiste lo que acaba de lanzar LagriHost? Sí, como lo estabas esperando, ahora vendemos Web Hosting y Dominios. Conoce más :)


Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
[PHP] Subir una imagen al servidor Script personalizable
#1
0
Script personalizable en PHP para subir una imagen al servidor, reducir la imagen a un tamaño específico (configurable), crear un versión en miniatura y eliminar la versión original. Éste script utiliza las librerías de GD incluídas en PHP . Aunado a éste script he incluído una rutina para mostrar las imágenes subidas al directorio con dos links, uno para abrirlo y otro para eliminarlo del servidor. También, éste script utiliza unos validadores para subir únicamente archivos PNG, GIF y JPG. Espero lo encuentres de utilidad. Modifícalo a tu gusto.


Código PHP:
<?php
 
####
## Eliminar una imagen
####
if(isset($_GET['eliminar'])){
$archivo $_GET['eliminar'];
$directorio dirname(__FILE__);
if(
unlink($directorio.'/'.$archivo)){
header("Location: cargarImagen.php?accion=eliminado");
exit;
}
}
 
##
## RECIBIR FORMULARIO
## Aqui pueden ir los campos que uno quiera
##
 
 
if(isset($_POST['submit'])){ // comprobamos que se ha enviado el formulario
// comprobar que han seleccionado una foto
if($_FILES['foto']['name'] != ""){ // El campo foto contiene una imagen...
// Primero, hay que validar que se trata de un JPG/GIF/PNG
$allowedExts = array("jpg""jpeg""gif""png""JPG""GIF""PNG");
$extension end(explode("."$_FILES["foto"]["name"]));
if (((
$_FILES["foto"]["type"] == "image/gif")
|| (
$_FILES["foto"]["type"] == "image/jpeg")
|| (
$_FILES["foto"]["type"] == "image/png")
|| (
$_FILES["foto"]["type"] == "image/pjpeg"))
&& 
in_array($extension$allowedExts)) {
// el archivo es un JPG/GIF/PNG, entonces...
$extension end(explode('.'$_FILES['foto']['name']));
$foto substr(md5(uniqid(rand())),0,10).".".$extension;
$directorio dirname(__FILE__); // directorio de tu elección
// almacenar imagen en el servidor
move_uploaded_file($_FILES['foto']['tmp_name'], $directorio.'/'.$foto);
$minFoto 'min_'.$foto;
$resFoto 'res_'.$foto;
resizeImagen($directorio.'/'$foto6565,$minFoto,$extension);
resizeImagen($directorio.'/'$foto500500,$resFoto,$extension);
unlink($directorio.'/'.$foto);
} else { 
// El archivo no es JPG/GIF/PNG
$malformato $_FILES["foto"]["type"];
header("Location: cargarImagen.php?error=noFormato&formato=$malformato");
exit;
}
} else { 
// El campo foto NO contiene una imagen
header("Location: cargarImagen.php?error=noImagen");
exit;
}
// fin del submit
 
####
## Función para redimencionar las imágenes
## utilizando las liberías de GD de PHP
####
 
function resizeImagen($ruta$nombre$alto$ancho,$nombreN,$extension){
$rutaImagenOriginal $ruta.$nombre;
if(
$extension == 'GIF' || $extension == 'gif'){
$img_original imagecreatefromgif($rutaImagenOriginal);
}
if(
$extension == 'jpg' || $extension == 'JPG'){
$img_original imagecreatefromjpeg($rutaImagenOriginal);
}
if(
$extension == 'png' || $extension == 'PNG'){
$img_original imagecreatefrompng($rutaImagenOriginal);
}
$max_ancho $ancho;
$max_alto $alto;
list(
$ancho,$alto)=getimagesize($rutaImagenOriginal);
$x_ratio $max_ancho $ancho;
$y_ratio $max_alto $alto;
if( (
$ancho <= $max_ancho) && ($alto <= $max_alto) ){//Si ancho
$ancho_final $ancho;
$alto_final $alto;
} elseif ((
$x_ratio $alto) < $max_alto){
$alto_final ceil($x_ratio $alto);
$ancho_final $max_ancho;
} else{
$ancho_final ceil($y_ratio $ancho);
$alto_final $max_alto;
}
$tmp=imagecreatetruecolor($ancho_final,$alto_final);
imagecopyresampled($tmp,$img_original,0,0,0,0,$ancho_final$alto_final,$ancho,$alto);
imagedestroy($img_original);
$calidad=70;
imagejpeg($tmp,$ruta.$nombreN,$calidad);
}
 
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Cargar imagen</title>
<meta name="author" content="Fernando Magrosoto V." />
<meta name="history" content="01 noviembre 2012" />
<meta name="email" content="fmagrosoto@gmail.com" />
<style>
body {
background-color: rgb(250,250,250);
color: rgb(50,50,50);
font-family: sans-serif;
font-size: 100%;
width: 600px;
margin: auto;
}
:focus {
outline: none;
}
a {
text-decoration: none;
color: red;
}
a:hover {
text-decoration: underline;
}
header {
border-bottom: 1px gray dotted;
padding-bottom: 25px;
margin-bottom: 25px;
}
header h1 {
font-size: xx-large;
text-shadow: 1px 1px 5px gray;
}
header em {
color: gray;
}
section form {
font-size: small;
}
section form fieldset {
padding: 10px 25px;
background-color: white;
border: 1px gray solid;
border-radius: .5em;
}
section form fieldset legend {
padding: 5px 10px;
border: 1px gray solid;
border-radius: .5em;
}
footer {
border-top: 1px gray dotted;
padding-top: 25px;
margin-top: 25px;
position: relative;
}
.msg {
margin-bottom: 20px;
padding: 10px;
background-color: rgb(255,250,250);
border: 1px red dotted;
}
.elimina {
color: blue;
}
</style>
</head>
<!-- Página demostrativa que permite reducir las imágenes cargadas -->
<!-- desde un formulario y almacenarlas en el servidor -->
<!-- utilizando las librerías GD de PHP. -->
 
<body>
<!-- HEADER -->
<header>
<h1>Script para cargar y reducir imágenes para entradas a un blog</h1>
<em>Script para subir imágenes, reducirlas, hacer versiones miniatura y
eliminar la versión original. Validando que sean únicamente GIF, PNG y JPG.</em>
</header>
<!-- SECCION -->
<section>
<?php if(isset($_POST['submit'])) { ?>
<div class="msg">El archivo ha sido cargado satisfactoriamente.</div>
<?php ?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>"
method="POST"
enctype="multipart/form-data">
<fieldset>
<legend>Seleccionar una imagen</legend>
<div><input type="file" name="foto" /></div>
<div style="margin-top: 10px;"><input type="submit" name="submit" />
<a href="<?php echo $_SERVER['PHP_SELF']; ?>">Reiniciar</a></div>
</fieldset>
</form>
<div style="margin-top: 25px; font-size: small;">
<?php
$path 
dirname(__FILE__);
$directorio=dir($path);
echo 
"Directorio de fotos: <em>".$path.":</em><br />
<span style='color: rgb(150,150,150);'>// Únicamente muestra GIF, JPG y PNG.</span><br /><br />"
;
while (
$archivo $directorio->read()) {
$extension end(explode('.'$archivo));
if(
$extension == 'png'
|| $extension == 'gif'
|| $extension == 'jpg'){
echo 
"<a href='".$archivo."' target='_blank'>".$archivo."</a> [ <a class='elimina' href='".$_SERVER['PHP_SELF']."?eliminar=".$archivo."'>eliminar</a> ]<br>";
}
}
$directorio->close();
?>
</div>
</section>
<!-- FOOTER -->
<footer>
<p>&copy; 2014 - *****.com</p>
<div style="position: absolute; top: 25px; right: 0;"><a href="http://www.w3.org/html/logo/">
<img src="http://www.w3.org/html/logo/badge/html5-badge-h-css3-semantics.png"
width="165" height="64" alt="HTML5 Powered with CSS3 / Styling, and Semantics"
title="HTML5 Powered with CSS3 / Styling, and Semantics">
</a>
</div>
</footer>
<!-- FIN DE LA PÁGINA -->
<!-- EOF -->
</body>
</html> 

#2
0
Muy bueno! Le va a servir a varios! Saludos!

#3
0
Pero creo que no se puede utilizar nuestro sitio en lagrihost para crear un hosting de imágenes, corrijanme si me equivoco O.o

#4
0
Muy buen aporte, es un script que puede ayudar mucho, ya que es algo que no siempre se encuentra en la red de forma entendible. Gracias!!!
Nunca consideres el estudio como una obligación, sino como una oportunidad para penetrar en el bello y maravilloso mundo del saber. Albert Einstein

No olvides visitar mi web sobre informática... Bitácora Informática

Una nueva comunidad, un nuevo concepto, te esperamos... Tangaria



Posibles temas similares...
Tema Autor Respuestas Vistas Último mensaje
  Tutorial Pasar base de datos MySQL de un servidor a otro vía SSH Diringax 0 322 10-07-2017, 06:15 PM
Último mensaje: Diringax
  APORTE JAVA: Domine el lenguaje líder en aplicaciones cliente servidor - User Kevin Alfonso 1 577 04-08-2016, 10:59 PM
Último mensaje: asanbus
  script bueno para secuencia imagenes torgar22 0 576 20-07-2015, 05:58 PM
Último mensaje: torgar22
  Imagen volando por la pantalla torgar22 0 486 21-06-2015, 11:16 AM
Último mensaje: torgar22
  Efecto nieve con cualquier imagen torgar22 0 459 18-06-2015, 12:51 PM
Último mensaje: torgar22



Usuarios navegando en este tema:
1 invitado(s)


Forum software by © MyBB Theme © Kevinex & iAndrew 2018