Foros del Web » Programando para Internet » PHP »

Subir imagenes al servidor

Estas en el tema de Subir imagenes al servidor en el foro de PHP en Foros del Web. Hola, muy buenas, tengo un codigo para subir imagenes a un base de datos del servidor (localhost), pero no me funciona, la tengo que subir ...
  #1 (permalink)  
Antiguo 04/05/2009, 04:43
 
Fecha de Ingreso: marzo-2008
Mensajes: 72
Antigüedad: 16 años, 1 mes
Puntos: 0
Exclamación Subir imagenes al servidor

Hola, muy buenas, tengo un codigo para subir imagenes a un base de datos del servidor (localhost), pero no me funciona, la tengo que subir desde un formulario con el campo de examinar para elegir la imagen, y luego en otro archivo llamado desde el action tengo este codigo:


<?
$ruta = "./imagen/" . $_FILES['imagen']['name'];
copy($_FILES['imagen']['tmp_name'], $ruta);
echo "La imagen subio correctamente";
?>


El campo al que lo tengo que subir se llama imagen, pero no me sube nada, q tengo mal?
  #2 (permalink)  
Antiguo 04/05/2009, 04:51
Avatar de rompeguesos  
Fecha de Ingreso: marzo-2009
Mensajes: 692
Antigüedad: 15 años, 1 mes
Puntos: 8
Respuesta: Subir imagenes al servidor

Hola, mira este es el codigo que tengo yo en mi pagina quizas te pueda servir:

Código PHP:
<?php
session_start
();

if(!isset(
$_SESSION["login"])){
header("location: ../usu/login.php");
}
$login=$_SESSION["login"];
$carpeta 'imagenes/';

// incluimos el archivo de conexion
include ('../reg/config.php');
// recibimos el formulario
if(isset($_POST['enviar']) && $_POST['enviar'] == 'Enviar'){
// comprobamos que el formulario no envie campos vacios
if(!empty($_POST['titulo']) && $_POST['texto']){
// creamos las variables y les asignamos los valores a insertar
$titulo $_POST['titulo'];
$texto nl2br($_POST['texto']);

/* AddSlashes — Escapa una cadena insertando barras “\” */
$titulo=addslashes($titulo);
$texto=addslashes($texto);
//upload de imagen
if(is_uploaded_file($_FILES['fichero']['tmp_name'])) {
            
move_uploaded_file($_FILES['fichero']['tmp_name'], $carpeta.$_FILES['fichero']['name']); // se coloca en su lugar final
        
}

// hacemos el INSERT en la BD
$sqlInsertNot mysql_query("INSERT INTO noticias
(titulo, texto, email, f_alta, imagen) VALUES ('$titulo', '$texto', '$login', NOW(), '"
.$_FILES['fichero']['name']."')",$db_link) or die(mysql_error());
// enviamos un mensaje de exito
echo "Noticia subida correctamente";
}else{
// si el formulario envia algun campo vacio
// enviamos un mensaje de error
echo "Debe llenar todos los campos del formulario";
}
}
?>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!-- el formulario -->
<form name="noticia" action="<?php $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
<p>
Título de la Noticia<br />
<input type="text" name="titulo" size="50" maxlength="60" /><br/>
Máximo 60 carácteres.
</p>
<p>
Texto de la Noticia<br />
<textarea name="texto" rows="10" cols="50"></textarea>
</p>

<p>Archivo:<br />
<input name="fichero" type="file" /></p>


<p>
<input type="submit" name="enviar" value="Enviar" />
</p>
</form>
Adaptalo a tu gusto. Para cualquier duda aqui estoy.
  #3 (permalink)  
Antiguo 04/05/2009, 04:57
 
Fecha de Ingreso: marzo-2008
Mensajes: 72
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Subir imagenes al servidor

Lo unico que tendria que usar seria este codigo verdad?

if(is_uploaded_file($_FILES['fichero']['tmp_name'])) {
move_uploaded_file($_FILES['fichero']['tmp_name'], $carpeta.$_FILES['fichero']['name']); // se coloca en su lugar final
}
  #4 (permalink)  
Antiguo 04/05/2009, 05:19
 
Fecha de Ingreso: diciembre-2008
Mensajes: 118
Antigüedad: 15 años, 4 meses
Puntos: 6
Respuesta: Subir imagenes al servidor

me parece que el problema lo tienes al definir $ruta , quitale el punto que hay antes de la barra invertida, o si lo que querias era subir un nivel , pon 2 puntos n en vez de 1.
  #5 (permalink)  
Antiguo 04/05/2009, 05:30
 
Fecha de Ingreso: marzo-2008
Mensajes: 72
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Subir imagenes al servidor

He probado con lo de los puntos y nada, imagen es un campo de una tabla de una bd del servidor, me sale un error del directorio.
  #6 (permalink)  
Antiguo 04/05/2009, 12:34
Avatar de rompeguesos  
Fecha de Ingreso: marzo-2009
Mensajes: 692
Antigüedad: 15 años, 1 mes
Puntos: 8
Respuesta: Subir imagenes al servidor

¿donde guardas las imagenes? en una carpeta llamada imagen? si no tienes dicha carpeta primero tienes que crearla y luego en la ruta te sobra el "." y la primera "/".

Código PHP:
<?
$ruta 
"imagen/" $_FILES['imagen']['name'];
copy($_FILES['imagen']['tmp_name'], $ruta);
echo 
"La imagen subio correctamente";
?>
  #7 (permalink)  
Antiguo 05/05/2009, 02:13
 
Fecha de Ingreso: marzo-2008
Mensajes: 72
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Subir imagenes al servidor

He estado haciendo lo que me has dicho y me sale este error:

Warning: copy(imagen/Puesta de sol.jpg) [function.copy]: failed to open stream: No such file or directory in C:\xampp\htdocs\php\insertarcodigo.php on line 69.

Nose a q se debe!!
  #8 (permalink)  
Antiguo 05/05/2009, 08:04
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Subir imagenes al servidor

Ahora te dice que el path a la carpeta donde estas copiando es incorrecto, te recomiendo usar move_uploaded_file.

Saludos.
  #9 (permalink)  
Antiguo 05/05/2009, 08:42
Avatar de rompeguesos  
Fecha de Ingreso: marzo-2009
Mensajes: 692
Antigüedad: 15 años, 1 mes
Puntos: 8
Respuesta: Subir imagenes al servidor

Haber, prueba con este codigo:

Código PHP:
<?php
$ruta 
'imagen/';
if(
is_uploaded_file($_FILES['fichero']['tmp_name'])) { 
            
move_uploaded_file($_FILES['fichero']['tmp_name'], $ruta.$_FILES['fichero']['name']); // se coloca en su lugar final 
        
}
Y muy importante!! no se te olvide poner esto:

enctype="multipart/form-data"

En la etiqueta "<form>" un ejemplo es este:

Código PHP:
<form name="noticia" action="tu pagina de comprobar" method="post" enctype="multipart/form-data"
Si no pones el entype no te funcionara.
  #10 (permalink)  
Antiguo 05/05/2009, 08:58
 
Fecha de Ingreso: marzo-2008
Mensajes: 72
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Subir imagenes al servidor

Dios!!! o no funciona o es que yo soy muy cazurra, he copiado y pegado ese codigo en la parte del codigo del insertar, y al insertar una imagen no me sale ningun error, pero al listar la imagen no me sale, tengo que poner algo extra en algun otro lado??
  #11 (permalink)  
Antiguo 05/05/2009, 12:27
Avatar de rompeguesos  
Fecha de Ingreso: marzo-2009
Mensajes: 692
Antigüedad: 15 años, 1 mes
Puntos: 8
Respuesta: Subir imagenes al servidor

has revisado la carpeta imagen que se "supone" que has creado haber si se te a guardado la imagen?

Muestrame tambien el codigo de tu formulario y el codigo al que envias con "action" para poder revisarlo.
  #12 (permalink)  
Antiguo 06/05/2009, 02:07
 
Fecha de Ingreso: marzo-2008
Mensajes: 72
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Subir imagenes al servidor

Pongo los codigos enteros, lo mas seguro es q me falte algo.

En el diseño tengo esto :


Titulo:

<input type="text" name="titulo" id="titulo" />


Descripcion:

<textarea name="descri" id="descri"></textarea>

Descripción larga:

<textarea name="textolargo" id="textolargo"></textarea>
Fecha:

<input name="fecha" type="text" id="fecha" value="<?php echo date("Y/m/d"); ?>">
Hora:

<input name="hora" type="text" id="hora" readonly="readonly" value="<?php echo date ("H:i:s"); ?>">
Imagen:

<input type="file" name="imagen" id="imagen"/>
Quien:

<select name="quien">
<?php while ($row=mysql_fetch_assoc($List)){ ?>
<option value="<?php echo $row['id_usuario']; ?>"><?php echo $row['login']; ?> </option>
<?php } ?>
</select>

<input type="submit" name="enviar" id="boton" value="Enviar" class=" boton">


</form>


El codigo php:

<?php

include_once("conexion.php");
$cnn=mysql_connect($hostname,$username,$password) or die (mysql_error());
mysql_select_db($database,$cnn);
$insertSQL="insert into noticias(id_noticia,titulo,descripcion,texto_largo ,fecha,hora,imagen,quien)VALUES('".
$_REQUEST['idnoticia']."','".
$_REQUEST['titulo']."','".
$_REQUEST['descri']."','".
$_REQUEST['textolargo']."','".
$_REQUEST['fecha']."','".
$_REQUEST['hora']."','".
$_REQUEST['imagen']."','".
$_REQUEST['quien']."')";
$Result1=mysql_query($insertSQL,$cnn) or die (mysql_error());
mysql_close($cnn);
?>
<?php
$ruta = 'imagen/';
if(is_uploaded_file($_FILES['fichero']['tmp_name'])) {
move_uploaded_file($_FILES['fichero']['tmp_name'], $ruta.$_FILES['fichero']['name']);
}

?>




Ah, se me olvidaba, el campo imagen en la base de datos es un varchar

Última edición por Nena69; 06/05/2009 a las 03:58
  #13 (permalink)  
Antiguo 06/05/2009, 04:51
Avatar de rompeguesos  
Fecha de Ingreso: marzo-2009
Mensajes: 692
Antigüedad: 15 años, 1 mes
Puntos: 8
Respuesta: Subir imagenes al servidor

Hola donde tienes el codigo que cuando pincha en el boton enviar te lo envie?

creo que lo que te falta es eso tal y como te comente antes :

<form name="noticia" action="Aqui el nombre de la pagina a la que lo envias" method="post" enctype="multipart/form-data">

ponlo al principio del formulario antes de titulo. A parte tambien haces antes la insercción, antes de recoger la imagen cambia el orden y pon el if de la imagen despues del include de la conexion.

el php ponlo asi haber si va:

Código PHP:
<?php

include_once("conexion.php");
$ruta 'imagen/';
if(
is_uploaded_file($_FILES['fichero']['tmp_name'])) { 
move_uploaded_file($_FILES['fichero']['tmp_name'], $ruta.$_FILES['fichero']['name']); 
}
$cnn=mysql_connect($hostname,$username,$password) or die (mysql_error());
mysql_select_db($database,$cnn);
$insertSQL="insert into noticias(id_noticia,titulo,descripcion,texto_largo ,fecha,hora,imagen,quien)VALUES('".
$_REQUEST['idnoticia']."','".
$_REQUEST['titulo']."','".
$_REQUEST['descri']."','".
$_REQUEST['textolargo']."','".
$_REQUEST['fecha']."','".
$_REQUEST['hora']."','".
$_FILES['fichero']['name']."'','".
$_REQUEST['quien']."')";
$Result1=mysql_query($insertSQL,$cnn) or die (mysql_error());
mysql_close($cnn);
?>
<?php

Última edición por rompeguesos; 06/05/2009 a las 05:02
  #14 (permalink)  
Antiguo 06/05/2009, 05:58
 
Fecha de Ingreso: marzo-2008
Mensajes: 72
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Subir imagenes al servidor

Ya me va todo perfectamente gracias!!!! Ahora ya solo me falta poner limites de tamaño y eso y listo.
  #15 (permalink)  
Antiguo 06/05/2009, 06:33
Avatar de rompeguesos  
Fecha de Ingreso: marzo-2009
Mensajes: 692
Antigüedad: 15 años, 1 mes
Puntos: 8
Respuesta: Subir imagenes al servidor

Para eso de los tamaños y eso hay por las faq's del foro algunas cositas echale un vistazo y tambien en los aportes creo que hay algo.
  #16 (permalink)  
Antiguo 06/05/2009, 08:48
 
Fecha de Ingreso: marzo-2008
Mensajes: 72
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Subir imagenes al servidor

Ok, gracias, voy a ver si lo consigo.
  #17 (permalink)  
Antiguo 06/05/2009, 09:31
 
Fecha de Ingreso: marzo-2008
Mensajes: 72
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Subir imagenes al servidor

He intentado hacerlo pero no me sale!! he estado intentandolo yo sola, y he hecho esto, mas o menos me acerco a que funcione??

$ruta = $_FILES['imagen']['name'];
$rutatemp = $_FILES['imagen']['tmp_name'];
$tipo= $_FILES['imagen']['type'];
$tamano = $_FILES['imagen']['size'];
if ($tamano<100){
move_uploaded_file($rutatemp,"upload/".$ruta);}
else{
'El tamaño no es valido';

}
  #18 (permalink)  
Antiguo 06/05/2009, 10:12
Avatar de rompeguesos  
Fecha de Ingreso: marzo-2009
Mensajes: 692
Antigüedad: 15 años, 1 mes
Puntos: 8
Respuesta: Subir imagenes al servidor

Nena69 no sabria que responderte ya que mi novatez no me lo permite y todavia no he hecho nunca nada relacionado a eso del tamaño, espero que te ayuden los del foro.
  #19 (permalink)  
Antiguo 06/05/2009, 10:21
 
Fecha de Ingreso: diciembre-2003
Mensajes: 173
Antigüedad: 20 años, 4 meses
Puntos: 1
Respuesta: Subir imagenes al servidor

Buenas ...

Creo que deberias modificar esta parte del codigo

else{
'El tamaño no es valido';

}

por

else{
echo 'El tamaño no es valido';

}

Un saludo nena69
  #20 (permalink)  
Antiguo 06/05/2009, 10:30
 
Fecha de Ingreso: marzo-2008
Mensajes: 72
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Subir imagenes al servidor

No me referia eso, aunk ahora q me lo has dicho lo tenia mal, lo que pasa esq me inserta imagenes superiores a 100, y supuestamente las superiores a 100 no me deberia de dejar!
  #21 (permalink)  
Antiguo 07/05/2009, 04:17
 
Fecha de Ingreso: marzo-2008
Mensajes: 72
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Subir imagenes al servidor

He probado a cambiarlo de posicion y nada

$ruta = $_FILES['imagen']['name'];
$rutatemp = $_FILES['imagen']['tmp_name'];
$tipo= $_FILES['imagen']['type'];
$tamano = $_FILES['imagen']['size'];
if($tamano > 10){
echo "El tamaño es superior al permitido"; }
else {
move_uploaded_file($rutatemp,"upload/".$ruta);
}


nose que error puede haber!
  #22 (permalink)  
Antiguo 07/05/2009, 08:08
 
Fecha de Ingreso: febrero-2009
Ubicación: cancun!
Mensajes: 898
Antigüedad: 15 años, 2 meses
Puntos: 15
Respuesta: Subir imagenes al servidor

echo $tamano

para ver que realmente te esta tomando el tamaño de la imagen saludos!
__________________
WHERE IS MY BLUE SUNNY SKY??
pd: todos los karmas son bienvenidos :D
  #23 (permalink)  
Antiguo 07/05/2009, 08:57
 
Fecha de Ingreso: marzo-2008
Mensajes: 72
Antigüedad: 16 años, 1 mes
Puntos: 0
el tamaño si k me lo muestra con echo $tamano, pero lo que me resulta raro esq las que ocupan mas me las inserta igualmente.

Lo e estado pensando y alomejor lo que me falla es el tamaño, quiero q no ocupen mas de 10 kb, estaria asi bien expresado??

Última edición por GatorV; 07/05/2009 a las 09:30
  #24 (permalink)  
Antiguo 07/05/2009, 09:07
 
Fecha de Ingreso: febrero-2009
Ubicación: cancun!
Mensajes: 898
Antigüedad: 15 años, 2 meses
Puntos: 15
Respuesta: Subir imagenes al servidor

Cita:
move_uploaded_file($rutatemp,"upload/".$ruta);
despues de esto tienes algun otro codigo que pueda mover el archivo?
y cuando son mayores a 10 si te muestra
Cita:
echo "El tamaño es superior al permitido";
otra cosilla
acomoda tus llaves
Cita:
if (condición)
{
Instrucción 1;
Instrucción 2;
...
}
else
{
Instrucción A;
Instrucción B;
...
}
saludines!!
__________________
WHERE IS MY BLUE SUNNY SKY??
pd: todos los karmas son bienvenidos :D
  #25 (permalink)  
Antiguo 07/05/2009, 09:12
 
Fecha de Ingreso: marzo-2008
Mensajes: 72
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Subir imagenes al servidor

Despues de esto: move_uploaded_file($rutatemp,"upload/".$ruta), no tengo ninguna otra instruccion, deberia?? lo del tamalo es superior al ermitido me lo muestra siempre.
  #26 (permalink)  
Antiguo 07/05/2009, 09:23
 
Fecha de Ingreso: febrero-2009
Ubicación: cancun!
Mensajes: 898
Antigüedad: 15 años, 2 meses
Puntos: 15
Respuesta: Subir imagenes al servidor

prueba asi
Cita:
<?
$destino = 'uploaded';
// Leemos el tamaño del fichero
$tamano = $_FILES['file']['size'];
// Comprovamos el tamaño
if($tamano < 500){
copy($_FILES['file']['tmp_name'], $destino.'/'.$_FILES['file']['name'])
}
else echo "El tamaño es superior al permitido";
?>
claro haciendo modificaciones saludines!!
__________________
WHERE IS MY BLUE SUNNY SKY??
pd: todos los karmas son bienvenidos :D
  #27 (permalink)  
Antiguo 07/05/2009, 10:18
 
Fecha de Ingreso: marzo-2008
Mensajes: 72
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Subir imagenes al servidor

He probado con ese codigo y nada, sigue haciendo lo mismo.
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 16:59.