elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  Bases de Datos (Moderador: Carloswaldo)
| | | |-+  Guardar imagen en Base de datos o en disco del servidor ???
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Guardar imagen en Base de datos o en disco del servidor ???  (Leído 10,822 veces)
SpiderNet

Desconectado Desconectado

Mensajes: 149


No abuses de tus conocimientos


Ver Perfil WWW
Guardar imagen en Base de datos o en disco del servidor ???
« en: 3 Octubre 2008, 22:13 pm »

Estoy haciendo una web donde los usuarios pueden subir imagenes, he buscado en la red y vi que pueden hacerse de dos formas, subiendolas a la base de datos o grabando solo e4l nombre en la base de datos y el nombre directo en eldisco del servidor.

Ahora bien que es lo mas recomendable y por que?

Si tienen esa información , por favor!!! les agradecería.


Saludos!!!


En línea

Quieres un foro solo para principiantes
Visita  http://spidernet.forumotion.com

El miedo es libre, puedes sentirlo....
дٳŦ٭
GNU/Linux Infrastructure Specialist
Ex-Staff
*
Desconectado Desconectado

Mensajes: 5.110


Ver Perfil WWW
Re: Guardar imagen en Base de datos o en disco del servidor ???
« Respuesta #1 en: 4 Octubre 2008, 02:52 am »

Por optimización al servidor de bd te recomiendo en el hdd del server.

Suerte


En línea



Con sangre andaluza :)
Karman


Desconectado Desconectado

Mensajes: 673



Ver Perfil WWW
Re: Guardar imagen en Base de datos o en disco del servidor ???
« Respuesta #2 en: 4 Octubre 2008, 02:57 am »

obviamente que en disco rígido... si está en db 1º ocupas espacio, y luego requieres un gran uso de memoria para el pasaje de la imagen de la db a la pag... (tiempo inútil)

S2
En línea

SpiderNet

Desconectado Desconectado

Mensajes: 149


No abuses de tus conocimientos


Ver Perfil WWW
Re: Guardar imagen en Base de datos o en disco del servidor ???
« Respuesta #3 en: 4 Octubre 2008, 05:00 am »

Tendran alguna guia, algun bosquejo de como podría hacerlo???

Desconozco con que instrucciones PHP se sube un archivo, además como haría para que el nombre de la imagen sea unico. Ya que dos personas pueden tener archivos con el mismo nombre.


Saludos!!!
En línea

Quieres un foro solo para principiantes
Visita  http://spidernet.forumotion.com

El miedo es libre, puedes sentirlo....
Karman


Desconectado Desconectado

Mensajes: 673



Ver Perfil WWW
Re: Guardar imagen en Base de datos o en disco del servidor ???
« Respuesta #4 en: 4 Octubre 2008, 05:31 am »

justamente... estoy haciendo eso para una página que me encomendaron y más o menos el código es el siguiente:
HTML:
Código
  1. <form action="muy largo" method="post" name="agregarimagen" enctype="multipart/form-data">
  2. <input type="hidden" name="MAX_FILE_SIZE" value="250000">
  3. <input name="nombreimagen" type="file" accept="image/jpeg" size="70">
  4. <p><input class="boton" name="agregar" value="Agregar" type="submit"></p>
  5. </form>
  6.  

lo que no tienes que olvidar de esta parte es enctype="multipart/form-data"
accept es solo soportado por algunos exploradores

PHP:
Código
  1. //Obtenemos datos del archivo enviado...
  2. $imagen = $_FILES('nombreimagen');
  3. if(!$imagen)
  4. return ShowError("No se ha Encontrado la Imagen Solicitada.");
  5. //Verificamos datos...
  6. if(($imagen['tmp_name']="")||($imagen['name']=="")||(!$imagen['size']))
  7. return ShowError("No se ha Especificado el Nombre de la Imagen.");
  8. //Verificamos tamaño
  9. if($imagen['size'] > 250000)
  10. return ShowError("La Imagen es demasiado grande, por favor reduzca su tamaño.");
  11.    //Verificamos Tipo...
  12.    if(($imagen['type'] == 'image/jpeg')||($imagen['type'] == 'image/pjpeg')){
  13.     //Comprobamos exista el archivo temporal en el servidor...
  14.     //(NOTA: desconozco porqué no funciona $imagen['tmp_name'])
  15.    if (is_uploaded_file($_FILES['nombreimagen']['tmp_name'])){
  16.     $carpeta = "Imagenes".date("Y");
  17.     //Si no existe la carpeta intentamos crearla...
  18.     if ((!file_exists($carpeta))&&(!mkdir($carpeta,644)))
  19.     return ShowError("No se ha podido encontrar/crear la carpeta destino.");
  20.     //generamos nombre de archivo (no utilizaremos el enviado)
  21.     $nombrearchivo="imgn".$numeroimagen.".jpg";
  22.     $nuevaimagen = "$carpeta/$nombrearchivo";
  23.     while(file_exists($nuevaimagen)){
  24.     $nombrearchivo="imgn".(++$numeroimagen).".jpg";
  25.     $nuevaimagen = "$carpeta/$nombrearchivo";
  26.     }
  27.     //Si todo Ocurrió Correctamente subimos la imagen
  28.     //(NOTA: desconozco porqué no funciona $imagen['tmp_name'])
  29.     if (!move_uploaded_file($_FILES['nombreimagen']['tmp_name'], $nuevaimagen))
  30.   return ShowError("Lo siento. No se ha Podido Subir la Imagen.");
  31.    }else
  32.     return ShowError("No se ha encontrado el archivo temporal.<br/>Esto puede deberse a que el archivo enviado es demasiado grande.");
  33.   }else
  34.   return ShowError("Tipo de archivo incorrecto.");
  35. //Acá vendría el código todo OK
  36.  

Cave aclarar que algunas variables (cuando genero el nombre del archivo) las obtengo de la base de datos, (hago una referencia en base de datos para que sea más sencillo eliminarlas si no las necesito más), pero podrías obtenerlas por otros métodos...

PD: es para PHP 5, en otras versiones es distinto

S2
« Última modificación: 4 Octubre 2008, 05:47 am por Karman » En línea

SpiderNet

Desconectado Desconectado

Mensajes: 149


No abuses de tus conocimientos


Ver Perfil WWW
Re: Guardar imagen en Base de datos o en disco del servidor ???
« Respuesta #5 en: 4 Octubre 2008, 22:06 pm »

Precisamente yo trabajo con PHP5, lo tengo instalado conmo local y al subir mi web, será en un servidor con PHP5.

Voy a probar tu metodo y posteo aca mis resultados y dudas.


Gracias!!!
En línea

Quieres un foro solo para principiantes
Visita  http://spidernet.forumotion.com

El miedo es libre, puedes sentirlo....
SpiderNet

Desconectado Desconectado

Mensajes: 149


No abuses de tus conocimientos


Ver Perfil WWW
Re: Guardar imagen en Base de datos o en disco del servidor ???
« Respuesta #6 en: 4 Octubre 2008, 22:35 pm »

Si en el formulario no tengo el ... action="ejecutar.php"

Donde le decimos que script va a recibir los datos?


Saludos!!!
En línea

Quieres un foro solo para principiantes
Visita  http://spidernet.forumotion.com

El miedo es libre, puedes sentirlo....
Karman


Desconectado Desconectado

Mensajes: 673



Ver Perfil WWW
Re: Guardar imagen en Base de datos o en disco del servidor ???
« Respuesta #7 en: 5 Octubre 2008, 01:28 am »

no entiendo... en action va la página que procesa el formulario... en el ejemplo puse "muy largo" porque copié de mi sitio el código y no iba a postear todo el código...

S2
En línea

SpiderNet

Desconectado Desconectado

Mensajes: 149


No abuses de tus conocimientos


Ver Perfil WWW
Re: Guardar imagen en Base de datos o en disco del servidor ???
« Respuesta #8 en: 5 Octubre 2008, 17:09 pm »

Código
  1. <form action="muy largo" method="post" name="agregarimagen" enctype="multipart/form-data">
  2. <input type="hidden" name="MAX_FILE_SIZE" value="250000">
  3. <input name="nombreimagen" type="file" accept="image/jpeg" size="70">
  4. <p><input class="boton" name="agregar" value="Agregar" type="submit"></p>
  5. </form>
  6.  

Con solo esta parte del codigo deberia subir mi archivo al directorio temporal del servidor cierto???

Tengo instalado Apache 2.0, PHP 5 en mi PC. Verifique el php.ini y tengo configurado el upload....
file_uploads = On
upload_tmp_dir = "C:\Servidor\WEB\uploads\"
upload_max_filesize = 2M

Ejecuto el codigo y reviso el directorio que le indique al php.ini y no aparece nada.

Me aparece el siguiente error

Warning: copy(uploads/araña.gif) [function.copy]: failed to open stream: No such file or directory in D:\Servidor\WEB\manejo_de_imagenes\upload\upload2\sube_archicvo.php on line 18
El archivo subio con exito


Esta es mi linea 18
      copy($HTTP_POST_FILES['archivo']['tmp_name'], "uploads/".$HTTP_POST_FILES['archivo']['name']);   


Al ejecutarlo la primera vez aparentemente no hace nada. Al ejecutarlo la segunda vez es que aparece el mensaje de error.

Que hago???
« Última modificación: 5 Octubre 2008, 19:25 pm por SpiderNet » En línea

Quieres un foro solo para principiantes
Visita  http://spidernet.forumotion.com

El miedo es libre, puedes sentirlo....
Karman


Desconectado Desconectado

Mensajes: 673



Ver Perfil WWW
Re: Guardar imagen en Base de datos o en disco del servidor ???
« Respuesta #9 en: 5 Octubre 2008, 21:56 pm »

no puedes usar copy... tienes que usar las funciones que te puse... ya que el archivo no es copiado con el mismo nombre y hay atributos de seguridad tb.... con le código que te pasé tendría que funcionarte bien...

utilizando el código que te pasé prueba colocar unos echos en los $imagen['tmp_name'], $imagen['name'], $imagen['size'] y fíjate donde puede estar el error...

S2
« Última modificación: 5 Octubre 2008, 21:58 pm por Karman » En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines