/f1.php

https://github.com/pai982010j90/gcv · PHP · 192 lines · 83 code · 89 blank · 20 comment · 2 complexity · 25cabd0d634184ef9e8990d6c14d5455 MD5 · raw file

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head>
  5. <title>Imagen a Blob</title>
  6. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  7. </head>
  8. <body>
  9. <form name="frmimage" id="frmimage" method="post"
  10. enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF']; ?>">
  11. Nombre: <input type="text" id="nombre" name="nombre" /><br />
  12. Imagen: <input type="file" id="foto" name="foto" /><br />
  13. <input type="submit" name="enviar" id="enviar" value="Guardar" />
  14. </form>
  15. </body>
  16. </html>
  17. <?php
  18. // Verificamos que el formulario no ha sido enviado aun
  19. $postback = (isset($_POST["enviar"])) ? true : false;
  20. if($postback){
  21. // Nivel de errores
  22. error_reporting(E_ALL);
  23. // Constantes
  24. # Altura de el thumbnail en píxeles
  25. define("ALTURA", 50);
  26. # Nombre del archivo temporal del thumbnail
  27. define("NAMETHUMB", "/tmp/thumbtemp"); //Esto en servidores Linux, en Windows podría ser:
  28. // define("NAMETHUMB", "c:/windows/temp/thumbtemp"); y te olvidas de los problemas de permisos
  29. # Servidor de base de datos
  30. define("DBHOST", "localhost");
  31. # nombre de la base de datos
  32. define("DBNAME", "cvdb");
  33. # Usuario de base de datos
  34. define("DBUSER", "gcvuser");
  35. # Password de base de datos
  36. define("DBPASSWORD", "gcvpass");
  37. // Mime types permitidos
  38. $mimetypes = array("image/jpeg", "image/pjpeg", "image/gif", "image/png");
  39. // Variables de la foto
  40. $name = $_FILES["foto"]["name"];
  41. $type = $_FILES["foto"]["type"];
  42. $tmp_name = $_FILES["foto"]["tmp_name"];
  43. $size = $_FILES["foto"]["size"];
  44. // Verificamos si el archivo es una imagen válida
  45. if(!in_array($type, $mimetypes))
  46. die("El archivo que subiste no es una imagen válida");
  47. // Creando el thumbnail
  48. switch($type) {
  49. case $mimetypes[0]:
  50. case $mimetypes[1]:
  51. $img = imagecreatefromjpeg($tmp_name);
  52. break;
  53. case $mimetypes[2]:
  54. $img = imagecreatefromgif($tmp_name);
  55. break;
  56. case $mimetypes[3]:
  57. $img = imagecreatefrompng($tmp_name);
  58. break;
  59. }
  60. $datos = getimagesize($tmp_name);
  61. $ratio = ($datos[1]/ALTURA);
  62. $ancho = round($datos[0]/$ratio);
  63. $thumb = imagecreatetruecolor($ancho, ALTURA);
  64. imagecopyresized($thumb, $img, 0, 0, 0, 0, $ancho, ALTURA, $datos[0], $datos[1]);
  65. switch($type) {
  66. case $mimetypes[0]:
  67. case $mimetypes[1]:
  68. imagejpeg($thumb, NAMETHUMB);
  69. break;
  70. case $mimetypes[2]:
  71. imagegif($thumb, NAMETHUMB);
  72. break;
  73. case $mimetypes[3]:
  74. imagepng($thumb, NAMETHUMB);
  75. break;
  76. }
  77. // Extrae los contenidos de las fotos
  78. # contenido de la foto original
  79. $fp = fopen($tmp_name, "rb");
  80. $tfoto = fread($fp, filesize($tmp_name));
  81. $tfoto = addslashes($tfoto);
  82. fclose($fp);
  83. # contenido del thumbnail
  84. $fp = fopen(NAMETHUMB, "rb");
  85. $tthumb = fread($fp, filesize(NAMETHUMB));
  86. $tthumb = addslashes($tthumb);
  87. fclose($fp);
  88. // Borra archivos temporales si es que existen
  89. @unlink($tmp_name);
  90. @unlink(NAMETHUMB);
  91. // Guardamos todo en la base de datos
  92. #nombre de la foto
  93. $nombre = $_POST["nombre"];
  94. $link = mysql_connect(DBHOST, DBUSER, DBPASSWORD) or die(mysql_error($link));;
  95. mysql_select_db(DBNAME, $link) or die(mysql_error($link));
  96. $sql = "INSERT INTO tabla(nombre, foto, thumb, mime)
  97. VALUES
  98. ('$nombre', '$tfoto', '$tthumb', '$type')";
  99. mysql_query($sql, $link) or die(mysql_error($link));
  100. echo "Fotos guardadas";
  101. exit();
  102. }
  103. ?>