Ver Mensaje Individual
  #2 (permalink)  
Antiguo 24/01/2013, 05:32
Avatar de zalito12
zalito12
 
Fecha de Ingreso: noviembre-2011
Ubicación: Coruña, España
Mensajes: 430
Antigüedad: 12 años, 5 meses
Puntos: 67
Respuesta: Guardar una imagen en un campo de tabla mysql

Hola, la única forma que tienes de que un usuario suba una imagen y se vea en tu web es almacenando esta en tu servidor.
Puedes guardarla directamente en la base de datos.
O puedes subirla a un directorio de tu host y guardar la ruta en tu DB.

Yo suelo optar por la segunda y creo que es lo que buscas.
Pues bien, si tú guardas las imagenes en una carpeta de tu host, ya conoces la ruta y el nombre, es más deberías darle un nombre en función de la fecha y hora y algún número aleatorio para que no se repitan nunca.
Te dejo un ejemplo de parte de un form que hice hace tiempo con ayuda de búsquedas por internet, repito, hace tiempo, así que no te aseguro que sea la leche.

Está pensado para tener el archivo en el directorio raíz y las imágenes en /images
Si lo cambias habría que retocar las rutas y demás
Código PHP:
<?php
if (isset($_POST['send'])){
    
//Image sent and upload to host
    
$url 'www.dominio.com/images/';   //absolute route
    
$path 'images/';                                   //relative route
    
    
if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg"
        || (
$_FILES["file"]["type"] == "image/pjpeg") || ($_FILES["file"]["type"] == "image/bmp")
        || (
$_FILES["file"]["type"] == "image/png")) && ($_FILES["file"]["size"] < $_POST['MAX_SIZE'])){
        
//allowed extensions: jpg,jpeg,bmp,png,gif
      
if ($_FILES["file"]["error"] > 0){
        echo 
"Error: " $_FILES["file"]["error"] . ". File couldn't be sent.<br />";
      }
      else{
        
$file pathinfo($_FILES["file"]["name"]);
        
$ext '.'.$file['extension']; 
        
$part date('dmYHis',time());                                            
        
$random rand(10,100);
        
$fileName $part.$random.$ext//An unique media name for file storage
        
$url $url.$fileName;  //The absolute route for links
        
$id $fileName;       //The filename for php refers, unlink(), etc.                                 
                                                                    
        
if(move_uploaded_file($_FILES["file"]["tmp_name"],$path.$fileName)){
          
$error false;
        }
      }
    }
    elseif (!(
$_FILES["file"]["size"] < $_POST['MAX_SIZE'])){
      echo 
'<div class="errors" align="center"><font color="red" size="6"><strong>Error</strong></font></p>';
      echo 
'<p class="caption">The file size must be less than 2MB</p>';
      
$error true;
    }
    else{
      echo 
'<div class="errors" align="center"><font color="red" size="6"><strong>Error</strong></font></p>';
      echo 
'<p class="caption">Invalid File Extension!</p>';
      
$error true;
    } 
  }
?>
<form action="" enctype="multipart/form-data" method="post">
  <label>Archivo</label>
  <input type="hidden" name="MAX_SIZE" value="2000000" />
  <input id="fieldUpload" type="file" name="file" size="30" />
  <textarea type="text" name="description_form" cols="38" rows="8" required="required" ></textarea>
  <input type="submit" value="Enviar" name="submit" />
</form>
El tamaño máximo está definido en el form en un hidden, para más seguridad lo deberías comprobar en el código PHP