Foros del Web » Programando para Internet » PHP »

Problema upload de imagenes y mysql

Estas en el tema de Problema upload de imagenes y mysql en el foro de PHP en Foros del Web. Hola tengo este upload q tambien postea la ruta en mysql, solo sirve lo de postear en mysql, pero no sube la imagen este es ...
  #1 (permalink)  
Antiguo 05/01/2011, 03:28
 
Fecha de Ingreso: mayo-2010
Mensajes: 185
Antigüedad: 13 años, 11 meses
Puntos: 2
Problema upload de imagenes y mysql

Hola tengo este upload q tambien postea la ruta en mysql, solo sirve lo de postear en mysql, pero no sube la imagen este es el codigo:

Código PHP:
<?php
 
$conexion 
mysql_connect("sql201.byethost15.com""user""pass");  

mysql_select_db("database"$conexion);
  
if ( ! empty(
$_POST)) {

if (
preg_match("@image/(gif|jpg|jpeg|png|x-png|bmp)$@"$_FILES['archivo']['type'])){ 
if (
$_POST['action'] == "add" && $_FILES['archivo']['name'] != "") {   

$ruta "./imagenesgio/" .time(). $_FILES['archivo']['name'];  
copy($_FILES['archivo']['tmp_name'], $ruta);  
echo 
"<b>La imagen subio correctamente</b>"
     }
     else{
    echo 
"Solo se pueden subir imagenes tipo .png,.gif,.jpg,.bmp,.jpeg";
    } }
    
    
$que "INSERT INTO gio (ruta) ";  
    
$que.= "VALUES ('".$ruta."')";  
    
$res mysql_query($que$conexion) or die(mysql_error());  
    
$state true;
    echo 
"Disco Agregado!";
      }
    
?>
    

<form name="form1" enctype="multipart/form-data" method="post" action="">
  <label>
  <input type="file" name="fileField" id="fileField">
  </label>
  <p>
    <label>
    <input type="submit" name="button" id="button" value="Subir imagen">
    <input type="hidden" name="action" value="add" />
    </label>
  </p>
</form>
<p>
  <label></label>
</p>

Última edición por Arcana; 05/01/2011 a las 03:34
  #2 (permalink)  
Antiguo 05/01/2011, 06:43
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Problema upload de imagenes y mysql

Hola Arcana, hay un par de errores en el código.
Primero comprueba que el directorio destino tiene los permisos de escritura necesarios, por lo demás, el programa debería funcionarte así:

Código PHP:
<?php


$conexion 
mysql_connect("server""user""rewqazxcv");

mysql_select_db("database"$conexion);

if ( ! empty(
$_POST)) {

    if (
preg_match("@image/(gif|jpg|jpeg|png|x-png|bmp)$@"$_FILES['fileField']['type'])){
        if (
$_POST['action'] == "add" && $_FILES['fileField']['name'] != "") {

            
$old $_FILES['fileField']['tmp_name'];
            
$new "temp/" .time(). $_FILES['fileField']['name'];

            if(
copy($_FILES['fileField']['tmp_name'], $new)) { echo "<b>La imagen subio correctamente</b>"; }
        }
        else{
            echo 
"Solo se pueden subir imagenes tipo .png,.gif,.jpg,.bmp,.jpeg";
        } }

        
$que "INSERT INTO gio (ruta) ";
        
$que.= "VALUES ('".$new."')";
        
        
$res mysql_query($que$conexion) or die(mysql_error());
        
$state true;
        echo 
"Disco Agregado!";
}
    
?>
    

<form name="form1" enctype="multipart/form-data" method="post" action="">
  <label>
  <input type="file" name="fileField" id="fileField">
  </label>
  <p>
    <label>
    <input type="submit" name="button" id="button" value="Subir imagen">
    <input type="hidden" name="action" value="add" />
    </label>
  </p>
</form>
<p>
  <label></label>
</p>
presta atención a la clave "fileField" del array FILES que estabas utilizando incorrectamente.
Asegurate también la ruta destino, puede cambiar en WIndows y LInux
Espero que te sirva, saludos
  #3 (permalink)  
Antiguo 05/01/2011, 11:19
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Problema upload de imagenes y mysql

Tambien es recomendable que uses move_uploaded_file() en vez de copy()
  #4 (permalink)  
Antiguo 05/01/2011, 14:39
 
Fecha de Ingreso: mayo-2010
Mensajes: 185
Antigüedad: 13 años, 11 meses
Puntos: 2
Respuesta: Problema upload de imagenes y mysql

Gracias si funciono, pero aun tiene un problema, cuando trato de subir un archivo q no es imagen, no me lo sube, pero si postea otro registro en la base de datos, y no me da el error de "Solo se pueden subir imagenes tipo .png,.gif,.jpg,.bmp,.jpeg".
Alguien sabe como resolverlo?

A y otra duda, por q las imagenes no se pueden postear en otra web?
  #5 (permalink)  
Antiguo 07/01/2011, 02:05
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Problema upload de imagenes y mysql

Sólo puedes subir imágenes porque tu código lo indica:

Código PHP:
 if (preg_match("@image/(gif|jpg|jpeg|png|x-png|bmp)$@"$_FILES['fileField']['type'])){ 
respecto de postear imágenes en otra web no sé a que te refieres. Pero desde luego no puedes subir imágenes a un servidor en el que no tengas permisos de escritura.
1 Saludo,
  #6 (permalink)  
Antiguo 08/01/2011, 03:27
 
Fecha de Ingreso: mayo-2010
Mensajes: 185
Antigüedad: 13 años, 11 meses
Puntos: 2
Respuesta: Problema upload de imagenes y mysql

amigo, lo q pasa es q no me sube las imagenes si no son de ese tipo, pero no me da el error, por ejemplo, si subo, texto.php, no lo sube, pero tampoco me dice "Solo se pueden subir imagenes tipo ..." Y quiero saber por que no me lo dice.

Y lo de q no se pueden postear en otra parte, toma como ejemplo, foros del web, creo un post, y doy en el signo de imagen, y voy a mi web y copio la direccion de la imagen y la pego aqui, y no me muestra la imagen
  #7 (permalink)  
Antiguo 08/01/2011, 08:13
Avatar de Masterphp  
Fecha de Ingreso: septiembre-2009
Ubicación: /home/php/
Mensajes: 94
Antigüedad: 14 años, 7 meses
Puntos: 3
Respuesta: Problema upload de imagenes y mysql

Prabad con esto:
Código PHP:
Ver original
  1. if ( !empty($_POST['enviofoto']) ) {
  2.    
  3.     // definimos las variables
  4.     if ( !empty($_POST['titulo']) )         $titulo         = $_POST['titulo'];
  5.     if ( !empty($_POST['copete']) )         $copete         = $_POST['copete'];
  6.     if ( !empty($_POST['idGaleria']) )  $idGaleria  = $_POST['idGaleria'];
  7.     if ( !empty($_POST['fPublicacion']) )   $fPublicacion   = $_POST['fPublicacion'];  
  8.    
  9.     // completamos la variable error si es necesario
  10.     if ( empty($titulo) )   $error['titulo']        = 'Es obligatorio completar el t&iacute;tulo de la noticia';
  11.     //if ( empty($copete) )     $error['copete']        = 'Es obligatorio completar el copete de la noticia';
  12.     //if ( empty($cuerpo) )     $error['cuerpo']        = 'Es obligatorio completar el cuerpo de la noticia';
  13.     if ( empty($idGaleria) )    $error['idGaleria']     = 'Es obligatorio seleccionar una categor&iacute;a para la noticia';
  14.    
  15.     // si no hay errores registramos al usuario
  16.     if ( empty($error) ) {
  17. $tamano = $_FILES["archivo"]['size'];
  18. $tipo = $_FILES["archivo"]['type'];
  19. $archivo = $_FILES["archivo"]['name'];  
  20. $prefijo = substr(md5(uniqid(rand())),0,6);
  21. //Images/Imagesusers/ enftp poner permiso 7777
  22. $ruta = "Images/Imagesusers/{$prefijo}_{$_FILES["archivo"]['name']}";
  23. copy($_FILES['archivo']['tmp_name'],$ruta);
  24.         // inserto los datos de registro en la db
  25.         $fCreacion = date("Y-m-d H:i:s");
  26.         $fModificacion = date("Y-m-d H:i:s");
  27.         if ( empty($fPublicacion) ) $fPublicacion = date("Y-m-d H:i:s");
  28.         $idUsuario = $arrUsuario['idUsuario'];
  29.         $query  = "INSERT INTO `imagenes` (titulo,copete,ruta,tamano,tipo,idGaleria,idUsuario,fCreacion,fModificacion,fPublicacion) VALUES ('$titulo','$copete','$ruta','$tamano','$tipo','$idGaleria','$idUsuario','$fCreacion','$fModificacion','$fPublicacion')";
  30.         $result = mysql_query($query, $conexion) or die("Problemas en el select".mysql_error());
  31.         header('Location: user?checknewart=true');
  32.         die;
  33.        
  34.     }
  35. }
Recuerda carpeta donde se suben las images con permiso 7777

Etiquetas: imagenes, mysql, upload
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:06.