Foros del Web » Programando para Internet » PHP »

Envio de Imágenes

Estas en el tema de Envio de Imágenes en el foro de PHP en Foros del Web. Buenas a todos: La cuestión es bien sencilla y me imagino que la mayoría controlará perfectamente el tema. Necesito que, a través de un formulario, ...
  #1 (permalink)  
Antiguo 26/08/2010, 13:42
 
Fecha de Ingreso: marzo-2010
Mensajes: 128
Antigüedad: 14 años
Puntos: 1
Envio de Imágenes

Buenas a todos:

La cuestión es bien sencilla y me imagino que la mayoría controlará perfectamente el tema. Necesito que, a través de un formulario, el usuario pueda enviarme imágenes que se almacenen en un directorio concreto y que dicha url se almacene en mi base de datos para poder mostrarlas posteriormente. La base de datos ya esta creada, con un campo para la ID concreta de cada imagen, otro para la ID del usuario que la manda y otro para la url donde está almacenada. El caso es que ni siquiera he conseguido que se mande la imagen... Por lo que tengo entendio es con el input type='file/multipart' o algo por el estilo. Si me ayudáis a resolver esta parte, me imagino que luego simplemente habrá que almacenar el value del input en una variable y a la BD, no?

Gracias y un saludo!


P.D. --> ¿Es necesario que el archivo (php) esté subido a un servidor real o puedo hacer prueba en localhost?
  #2 (permalink)  
Antiguo 26/08/2010, 14:02
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 15 años, 10 meses
Puntos: 127
Respuesta: Envio de Imágenes

en el manial encuentras todo lo que buscas:

http://enlinea.webhop.net/guia/featu...le-upload.html

NO ES NECESARIO QUE LO HAGAS EN UN SERVER REAL.
  #3 (permalink)  
Antiguo 26/08/2010, 17:26
 
Fecha de Ingreso: marzo-2010
Mensajes: 128
Antigüedad: 14 años
Puntos: 1
Respuesta: Envio de Imágenes

Ok, creo que mas o menos comprendo como funciona... pero lo que no sé, puesto que no me funciona, es en el 'tmp_name' que tengo que poner... Por lo demás, con ese manual creo que si soy capaz de conseguirlo. Pero es que eso del fichero temporal no sé que significa... Este es el código que he empelado:

<?php $self = 'envio.php'; ?>

<form enctype="multipart/form-data" action="<?php $self ?>" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="100000">
Enviar este archivo: <input name="userfile" type="file">
<input type="submit" value="Enviar archivo">
</form>

<?php

if (is_uploaded_file($_FILES['userfile']['tmp_name'])) {
copy($_FILES['userfile']['tmp_name'], "http://localhost:8888/files");
} else {
echo "Posible ataque de carga de archivos. Nombre de archivo: " . $_FILES['userfile']['type'];
}

?>

Gracias por la ayuda!
  #4 (permalink)  
Antiguo 26/08/2010, 19:31
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 15 años, 10 meses
Puntos: 127
De acuerdo Respuesta: Envio de Imágenes

prueba esto:

Código PHP:

<?php $self 'envio.php'?>

    <form enctype="multipart/form-data" action="<?php $self ?>" method="post">
        <input type="hidden" name="MAX_FILE_SIZE" value="100000">
        Enviar este archivo: <input name="userfile" type="file">
        <input type="submit" value="Enviar archivo">
    </form>

<?php 

    
if (is_uploaded_file($_FILES['userfile']['tmp_name'])) {
         
$destino=dirname(__FILE__) ;
        
copy($_FILES['userfile']['tmp_name'], $destino."/files/");
    } else {
        die( 
"Error el archivo no se a subido a el servidor: " $_FILES['userfile']['type']);

    }
move_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'], $destino."/file");
?>
  #5 (permalink)  
Antiguo 27/08/2010, 04:57
 
Fecha de Ingreso: marzo-2010
Mensajes: 128
Antigüedad: 14 años
Puntos: 1
Respuesta: Envio de Imágenes

Vale, la cosa va avanzando... jaja. Gracias por tu tiempo. Mira, he conseguido que, teoricamente, se llegue a mandar del siguiente modo:

Código:
<?php $self = 'envio.php'; ?> 

	    <form enctype="multipart/form-data" action="<?php $self ?>" method="post"> 
	        <input type="hidden" name="MAX_FILE_SIZE" value="10000000"> 
	        Enviar este archivo: <input name="userfile" type="file"> 
	        <input type="submit" value="Enviar archivo"> 
	    </form> 
	
<?php  

	    if (is_uploaded_file($_FILES['userfile']['tmp_name'])) { 
	         $destino = dirname(__FILE__); 
	        copy($_FILES['userfile']['tmp_name'], $destino."/files/");
			echo 'Archivo enviado correctamente.';
	    } else { 
	        die( "Error. El archivo no se ha subido a el servidor: " . $_FILES['userfile']['name']); 

	    } 
	move_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'], $destino."/file"); 
?>
Con este código llega a aparecer el mensaje "Archivo enviado correctamente", pero cuando voy a al directorio indicado, no hay ningún archivo en él... Lo siento por marearte tanto, soy bastante novato con el PHP y aun me queda mucho por aprender. Creo que la clave sigue estando en lo del dirname(__FILE__);. Además, por otra parte había algo relacionado con los permisos de la carpeta, nosequé del 777... sabes algo sobre eso?

Gracias una vez mas amigo!
  #6 (permalink)  
Antiguo 27/08/2010, 06:12
 
Fecha de Ingreso: marzo-2010
Mensajes: 128
Antigüedad: 14 años
Puntos: 1
Respuesta: Envio de Imágenes

Vale vale vale. Con tu código se manda el archivo pero no al directorio que yo quiero, sino al directorio madre (localhost), además, el nombre del archivo es 'file' y sin extensión. A ver si machando esto logro sacarlo.
Muchas gracias figura!
  #7 (permalink)  
Antiguo 27/08/2010, 07:18
 
Fecha de Ingreso: marzo-2010
Mensajes: 128
Antigüedad: 14 años
Puntos: 1
Respuesta: Envio de Imágenes

SOLUCIONADO!!

Muchisimas gracias artista. A raíz de tu código, por fin he logrado hacer un par de modificaciones sobre el código que tu me proporcionaste y funciona perfectamente.

Código PHP:
        <form enctype="multipart/form-data" action="<?php $_SERVER['PHP_SELF'?>" method="post"> 
            <input type="hidden" name="MAX_FILE_SIZE" value="3145728"> 
            Enviar este archivo: <input name="userfile" type="file"><br> 
            <input type="submit" value="Enviar archivo"> 
        </form> 

<?php  
    
        $archivo 
$_FILES['userfile']['name'];
        
$archivo strtolower($archivo);

        if (
is_uploaded_file($_FILES['userfile']['tmp_name'])) { 
            
            
$destino dirname(__FILE__) ; 
            
copy($_FILES['userfile']['tmp_name'], $destino);
            echo 
'El archivo <b>'.$_FILES['userfile']['name'].'</b> se ha enviado correctamente.';
            
        }
        else { 
            die(
"Error. El archivo <b>"$_FILES['userfile']['name']."</b> no se ha subido a el servidor "); 
        } 
        
move_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'], $destino."/files/".$archivo); 

?>
Gracias otra vez y un saludo!
  #8 (permalink)  
Antiguo 27/08/2010, 12:03
 
Fecha de Ingreso: marzo-2010
Mensajes: 128
Antigüedad: 14 años
Puntos: 1
Respuesta: Envio de Imágenes

Bueno, una vez conseguida esta parte, introduzco la URL y el login del usuario en la base de datos y ya están listas para mostrarse en el FrontEnd. Ahora me gustaría saber si es posible generar un nuevo directorio cuyo nombre sea el login del usuario, de manera que cada uno tenga su propio contenido separado en carpetas. La pregunta es simple: ¿Es posible generar directorios con PHP? Y, de ser así: ¿Cómo se puede hacer?
  #9 (permalink)  
Antiguo 27/08/2010, 13:31
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 15 años, 10 meses
Puntos: 127
Respuesta: Envio de Imágenes

igual que en cualquier sistema linux.
con mkdir.

http://enlinea.webhop.net/guia/function.mkdir.html
es super censillo.
es mas facil que coloques el nombre del directorio en la base y asi lo tedras siempre que quieras y para el usuario que quieras.

Etiquetas: envio
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 02:33.