Foros del Web » Programando para Internet » PHP »

Problemas al subir imagen con move_uploaded_file()

Estas en el tema de Problemas al subir imagen con move_uploaded_file() en el foro de PHP en Foros del Web. Desde que cambie de hosting llevo bastante tiempo teniendo este problema al subir imagenes, que no me sube la imagen, pongo el código a continuación: ...
  #1 (permalink)  
Antiguo 05/07/2012, 17:28
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 877
Antigüedad: 20 años, 10 meses
Puntos: 2
Problemas al subir imagen con move_uploaded_file()

Desde que cambie de hosting llevo bastante tiempo teniendo este problema al subir imagenes, que no me sube la imagen, pongo el código a continuación:

subir_imagen_comic.php:
Código PHP:
<?php
    
include('../../conexion.php');
    include(
'../../funciones.php');
    
    function 
insertar_imagen_comic($comic,$idcoleccioncomic,$id,$foto,$tipop,$tipog,$tamanop,$tamanog)
    {
        
$sql "update comics set portada = '".$foto."', p_portada = 'p_".$foto."' where id = ".$id." and idcoleccioncomic = ".$idcoleccioncomic;    
        
$sql1 "insert into imagenes values('','".$comic."',".$id.",'p_".$foto."','".$tipop."',".$tamanop.")";
        
$sql2 "insert into imagenes values('','".$comic."',".$id.",'".$foto."','".$tipog."',".$tamanog.")";
        
        
mysql_query($sql) or die("SQL Insertar_imagen_comic: ".mysql_error());
         
mysql_query($sql1) or die("SQL Insertar_imagen_comic 1: ".mysql_error());    
        
mysql_query($sql2) or die("SQL Insertar_imagen_comic 2: ".mysql_error());        
    }
?>

<link href="../../estilos.css" rel="stylesheet" type="text/css">

<?php
    
if($_GET['valor'] == 1)
    {
        
$idcoleccioncomic $_GET['idcoleccioncomic'];
        
$id $_GET['id'];
        
$comic $_GET['comic'];
        
/*$foto_name = $HTTP_POST_FILES['imagen']['name'];
        $nombre_temporal = $HTTP_POST_FILES['imagen']['tmp_name'];
        $tipo_archivo = $HTTP_POST_FILES['imagen']['type'];
        $tamano_archivo = $HTTP_POST_FILES['imagen']['size'];*/
        
        
        
$foto_name $_FILES['imagen']['name'];
        
$nombre_temporal $_FILES['imagen']['tmp_name'];
        
$tipo_archivo $_FILES['imagen']['type'];
        
$tamano_archivo $_FILES['imagen']['size'];
        
        if(
is_uploaded_file($nombre_temporal)) 
        {
            
$ruta $_SERVER['DOCUMENT_ROOT']."/comic/".$comic."/".$foto_name;
            
//$ruta = "httpdocs/comic/".$comic."/".$foto_name;
            //$ruta = "comic/".$comic."/".$foto_name;
            //copy($nombre_temporal, $ruta);
            
            
echo "RUTA: ".$ruta;
            
            
move_uploaded_file($nombre_temporal$ruta);
                                                
            
$imagen $foto_name;    
                    
            include(
'funcion_subir_imagen_comic.php');
        
            
$foto obtenerTamanoImagen($comic,$imagen);    
            echo 
"FOTO: ".$foto;    
            
            
$tamano filesize($foto);
            
$tipo mime_content_type($foto);    
        }
?>

<table width="100%" height="100%">
<tr><td class="letracontenido" align="center">

    Portada:<br />
    <img src="<?php echo $foto?>" border="0"><br />
    &nbsp;<br />
    
    <p align="center"><a href="subir_imagen_comic.php?valor=2&idcoleccioncomic=<?php echo $idcoleccioncomic?>&id=<?php echo $id?>&comic=<?php echo $comic?>&foto=<?php echo $imagen?>&foto_peque=<?php echo $foto?>&tamanop=<?php echo $tamano?>&tamanog=<?php echo $tamano_archivo?>&tipop=<?php echo $tipo?>&tipog=<?php echo $tipo_archivo?>">Ok</a></p>   
    
</td></tr>
</table>

<?php
    
}
    else if(
$_GET['valor'] == 2)
    {
        
$idcoleccioncomic $_GET['idcoleccioncomic'];
        
$id $_GET['id'];
        
$comic =$_GET['comic'];
        
$foto $_GET['foto'];
        
$foto_peque $_GET['foto_peque'];
        
$tipop $_GET['tipop'];
        
$tipog $_GET['tipog'];
        
$tamanop $_GET['tamanop'];
        
$tamanog $_GET['tamanog'];        

        
insertar_imagen_comic($comic,$idcoleccioncomic,$id,$foto,$tipop,$tipog,$tamanop,$tamanog);        
?>

<table width="100%" height="100%">
<tr><td class="letracontenido" align="center">

    <span class="negrita"><a href="#" onClick="window.close()">Cerrar</a></span>
    
</td></tr>
</table>

<?php    
    
}
    else
    {        
?>

<table width="100%" height="100%" border="0">
<tr><td align="center" valign="middle">

    <form name="sic" action="subir_imagen_comic.php?valor=1&idcoleccioncomic=<?php echo $_GET['idcoleccioncomic']; ?>&id=<?php echo $_GET['id']; ?>&comic=<?php echo $_GET['comic']; ?>" method="post" enctype="multipart/form-data">

        <input type="file" name="imagen">&nbsp;<input type="submit" name="submit" value="Subir imagen">

    </form>

</td></tr>
<tr><td class="letracontenido" align="center">

    <span class="negrita"><a href="#" onClick="window.close()">Cerrar</a></span>
    
</td></tr>
</table>

<?php
    
}
?>

funcion_subir_imagen_comic.php:
Código PHP:
<?php
    
function obtenerTamanoImagen($comic,$imagen
    { 
        
$dir_thumb "comic/".$comic."/";
        
$prefijo_thumb "p_";
        
$nombre $imagen;
        
$camino "comic/".$comic."/";
        
        if (!
file_exists($dir_thumb.$prefijo_thumb.$nombre)) 
        {
            
$img imagecreatefromjpeg($camino.$nombre) or die("No se encuentra la imagen $camino$nombre<br>");
        
            
$datos getimagesize($camino.$nombre) or die("Problemas con $camino$nombre<br>");
        
            
$anchura "100";
            
$ratio = ($datos[0] / $anchura);
            
$altura round($datos[1] / $ratio);
        
            
$thumb imagecreatetruecolor($anchura,$altura);
            
            
imagecopyresampled ($thumb$img0000$anchura$altura$datos[0], $datos[1]);
            
            
imagejpeg($thumb,$dir_thumb.$prefijo_thumb.$nombre);
            
            
$ruta $dir_thumb.$prefijo_thumb.$nombre;
            
            return 
$ruta;
        }
    }        
?>
Me devuelve:

Cita:
RUTA: /var/www/vhosts/bichomen.com/httpdocs/comic/mortadeloyfilemon/MyF188.jpg
No se encuentra la imagen comic/mortadeloyfilemon/MyF188.jpg
Desde luego en /var/www/vhosts/bichomen.com/httpdocs/comic/mortadeloyfilemon/ no se encuentra la imagen subida.


bichomen
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332
  #2 (permalink)  
Antiguo 05/07/2012, 17:46
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: Problemas al subir imagen con move_uploaded_file()

mysql_query($sql)

Tipico error, te falta luego de la consulta la variable conexion
  #3 (permalink)  
Antiguo 05/07/2012, 18:14
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 877
Antigüedad: 20 años, 10 meses
Puntos: 2
Respuesta: Problemas al subir imagen con move_uploaded_file()

Cita:
Iniciado por rodrigo791 Ver Mensaje
mysql_query($sql)

Tipico error, te falta luego de la consulta la variable conexion
La conexión, ya la hace al inicio, igualmente, el problema no es de mysql (no interviene para nada) es de PHP, que no sube el archivo a la carpeta del servidor que le indico.


bichomen
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332
  #4 (permalink)  
Antiguo 05/07/2012, 18:17
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: Problemas al subir imagen con move_uploaded_file()

Me refiero a que en mysql_query tenes que poner como 2do parametro la variable conexion...
Y no lei nada mas, solo vi ese error a simple vista
  #5 (permalink)  
Antiguo 05/07/2012, 18:32
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Problemas al subir imagen con move_uploaded_file()

No se a que nivel estas llamando a la función "obtenerTamanoImagen", pero, deberías usar $_SERVER['DOCUMENT_ROOT'] tal cual lo haces para "mover" (guardar) el archivo cuando se sube para asegurarte que PHP entenderá que la carpeta "comic" se encuentra en la raiz del sitio, si no, PHP entenderá que la carpeta "comic" esta al mismo nivel del cual se esta llamando a dicha función, por lo tanto si se llama desde un nivel superior (dentro de carpetas) nunca encontrará ni la carpeta ni el archivo...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #6 (permalink)  
Antiguo 05/07/2012, 18:41
 
Fecha de Ingreso: agosto-2011
Ubicación: Santo Domingo
Mensajes: 487
Antigüedad: 12 años, 8 meses
Puntos: 31
Respuesta: Problemas al subir imagen con move_uploaded_file()

Tu error esta en esta linea

subir_imagen_comic.php?valor=1&idcoleccioncomic=<? php echo $_GET['idcoleccioncomic']; ?>&id=<?php echo $_GET['id']; ?>&comic=<?php echo $_GET['comic']

porque tantas variables y confirma de que cada una este enviando los datos correcto
__________________
El talento se educa en la KARMA y el carácter en la tempestad.
Gabriel De Los Santos
  #7 (permalink)  
Antiguo 06/07/2012, 01:45
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 877
Antigüedad: 20 años, 10 meses
Puntos: 2
Respuesta: Problemas al subir imagen con move_uploaded_file()

Más tarde mirare con calma lo que me comentáis y os digo, muchas gracias por adelantado.


bichomen
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332
  #8 (permalink)  
Antiguo 06/07/2012, 03:47
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 877
Antigüedad: 20 años, 10 meses
Puntos: 2
Respuesta: Problemas al subir imagen con move_uploaded_file()

Cita:
Iniciado por gldelossantos Ver Mensaje
Tu error esta en esta linea

subir_imagen_comic.php?valor=1&idcoleccioncomic=<? php echo $_GET['idcoleccioncomic']; ?>&id=<?php echo $_GET['id']; ?>&comic=<?php echo $_GET['comic']

porque tantas variables y confirma de que cada una este enviando los datos correcto
No, la imagen se sube antes, ese link lo único que hace es actualizar la base de datos, con los datos de la imagen (nombre, tamaño, tipo) antes de ese link ya debería mostrar la miniatura de la imagen subida:

Código HTML:
Portada:<br />
    <img src="<?php echo $foto; ?>" border="0"><br />
    &nbsp;<br /> 

El problema esta aquí:

Código PHP:
$idcoleccioncomic $_GET['idcoleccioncomic'];
        
$id $_GET['id'];
        
$comic $_GET['comic'];
        
/*$foto_name = $HTTP_POST_FILES['imagen']['name'];
        $nombre_temporal = $HTTP_POST_FILES['imagen']['tmp_name'];
        $tipo_archivo = $HTTP_POST_FILES['imagen']['type'];
        $tamano_archivo = $HTTP_POST_FILES['imagen']['size'];*/
        
        
        
$foto_name $_FILES['imagen']['name'];
        
$nombre_temporal $_FILES['imagen']['tmp_name'];
        
$tipo_archivo $_FILES['imagen']['type'];
        
$tamano_archivo $_FILES['imagen']['size'];
        
        if(
is_uploaded_file($nombre_temporal)) 
        {
            
$ruta $_SERVER['DOCUMENT_ROOT']."/comic/".$comic."/".$foto_name;
            
//$ruta = "httpdocs/comic/".$comic."/".$foto_name;
            //$ruta = "comic/".$comic."/".$foto_name;
            //copy($nombre_temporal, $ruta);
            
            
echo "RUTA: ".$ruta;
            
            
move_uploaded_file($nombre_temporal$ruta);
                                                
            
$imagen $foto_name;    
                    
            include(
'funcion_subir_imagen_comic.php');
        
            
$foto obtenerTamanoImagen($comic,$imagen);    
            echo 
"FOTO: ".$foto;    
            
            
$tamano filesize($foto);
            
$tipo mime_content_type($foto);    
        } 

bichomen
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332
  #9 (permalink)  
Antiguo 06/07/2012, 03:54
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 877
Antigüedad: 20 años, 10 meses
Puntos: 2
Respuesta: Problemas al subir imagen con move_uploaded_file()

Cita:
Iniciado por Nemutagk Ver Mensaje
No se a que nivel estas llamando a la función "obtenerTamanoImagen", pero, deberías usar $_SERVER['DOCUMENT_ROOT'] tal cual lo haces para "mover" (guardar) el archivo cuando se sube para asegurarte que PHP entenderá que la carpeta "comic" se encuentra en la raiz del sitio, si no, PHP entenderá que la carpeta "comic" esta al mismo nivel del cual se esta llamando a dicha función, por lo tanto si se llama desde un nivel superior (dentro de carpetas) nunca encontrará ni la carpeta ni el archivo...

Los archivos:

subir_imagen_comic.php
funcion_subir_imagen_comic.php

están en: /var/www/vhosts/bichomen.com/httpdocs/Administracion/comics

He modificado tal y como comentas funcion_subir_imagen_comic.php


Código PHP:
function obtenerTamanoImagen($comic,$imagen
    { 
        
$dir_thumb $_SERVER['DOCUMENT_ROOT']."/comic/".$comic."/";
        
$prefijo_thumb "p_";
        
$nombre $imagen;
        
$camino $_SERVER['DOCUMENT_ROOT']."/comic/".$comic."/";
        
        if (!
file_exists($dir_thumb.$prefijo_thumb.$nombre)) 
        {
            
$img imagecreatefromjpeg($camino.$nombre) or die("No se encuentra la imagen $camino$nombre<br>");
        
            
$datos getimagesize($camino.$nombre) or die("Problemas con $camino$nombre<br>");
        
            
$anchura "100";
            
$ratio = ($datos[0] / $anchura);
            
$altura round($datos[1] / $ratio);
        
            
$thumb imagecreatetruecolor($anchura,$altura);
            
            
imagecopyresampled ($thumb$img0000$anchura$altura$datos[0], $datos[1]);
            
            
imagejpeg($thumb,$dir_thumb.$prefijo_thumb.$nombre);
            
            
$ruta $dir_thumb.$prefijo_thumb.$nombre;
            
            return 
$ruta;
        }
    } 
y devuelve esto:

Cita:
RUTA: /var/www/vhosts/bichomen.com/httpdocs/comic/mortadeloyfilemon/MyF188.jpg

No se encuentra la imagen /var/www/vhosts/bichomen.com/httpdocs/comic/mortadeloyfilemon/MyF188.jpg

bichomen
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332
  #10 (permalink)  
Antiguo 06/07/2012, 14:45
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Problemas al subir imagen con move_uploaded_file()

has un...

Código PHP:
Ver original
  1. if (!file_exists("comic/".$comic)) {
  2.      echo 'La carpeta comic/'.$comic.' no existe';
  3. }
  4.  
  5. if (move_uploaded_file($nombre_temporal, $ruta)) {
  6.      echo 'Se movió el archivo';
  7. }else {
  8.      echo 'No se pudo mover el archivo';
  9. }

Por ultimo, revista permisos de escritura en la carpeta "comic" y lo que sea que guardes en $comic...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)

Última edición por Nemutagk; 06/07/2012 a las 14:50
  #11 (permalink)  
Antiguo 07/07/2012, 04:57
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 877
Antigüedad: 20 años, 10 meses
Puntos: 2
Respuesta: Problemas al subir imagen con move_uploaded_file()

Cita:
Iniciado por Nemutagk Ver Mensaje
has un...

Código PHP:
Ver original
  1. if (!file_exists("comic/".$comic)) {
  2.      echo 'La carpeta comic/'.$comic.' no existe';
  3. }
  4.  
  5. if (move_uploaded_file($nombre_temporal, $ruta)) {
  6.      echo 'Se movió el archivo';
  7. }else {
  8.      echo 'No se pudo mover el archivo';
  9. }

Por ultimo, revista permisos de escritura en la carpeta "comic" y lo que sea que guardes en $comic...

Tanto si pongo $_SERVER['DOCUMENT_ROOT'] como si no me dice que la carpeta no existe, pero si que existe, e revisado los permisos y tiene todos marcados excepto el de escritura por otro usuarios.


[

Cita:
La carpeta /var/www/vhosts/bichomen.com/httpdocs/comic/mortadeloyfilemon no existe
No se pudo mover el archivoNo se encuentra la imagen /var/www/vhosts/bichomen.com/httpdocs/comic/mortadeloyfilemon/MyF188.jpg

bichomen
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332
  #12 (permalink)  
Antiguo 07/07/2012, 13:17
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Problemas al subir imagen con move_uploaded_file()

No se si te has dado cuenta, pero en la imagen muestras la siguiente ruta:

"p.bichomen.com/httpdocs/comic/mortadeloyfilemon"

y PHP con $_SERVER['DOCUMENT_ROOT'] muestras...

"bichomen.com/httpdocs/comic/mortadeloyfilemon"

donde quedo el "p."? no se si es un subdominio o si de plano es otra carpeta, PHP no te va a mentir ni engañar, el no puede encontrar dicha carpeta, por lo tanto no puede leer/escribir dentro de ella...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #13 (permalink)  
Antiguo 07/07/2012, 13:56
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 877
Antigüedad: 20 años, 10 meses
Puntos: 2
Respuesta: Problemas al subir imagen con move_uploaded_file()

Cita:
Iniciado por Nemutagk Ver Mensaje
No se si te has dado cuenta, pero en la imagen muestras la siguiente ruta:

"p.bichomen.com/httpdocs/comic/mortadeloyfilemon"

y PHP con $_SERVER['DOCUMENT_ROOT'] muestras...

"bichomen.com/httpdocs/comic/mortadeloyfilemon"

donde quedo el "p."? no se si es un subdominio o si de plano es otra carpeta, PHP no te va a mentir ni engañar, el no puede encontrar dicha carpeta, por lo tanto no puede leer/escribir dentro de ella...
Esa p sale porque no se muestra luta entera, es que estoy accediendo desde un ftp:

ftp://[email protected]/http...adeloyfilemon/

Pero como puedes ver la ruta sigue siendo httpdocs/comic/mortadeloyfilemon/


bichomen
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332

Etiquetas: imagenes, mysql, sql
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 20:05.