Insertar imagen en mysql

DredG

Llevo todo el día con este problema y no consigo arreglarlo, seguramente sea una tontería pero es que necesito subir unas imágenes a una base de datos mysql que por lo que me han dicho lo que tengo que subir es la ruta y es que me es imposible subirlo.

Estoy realizando un proyecto para clase en el cual quiero que salgan unas fotos de películas así royo cinetube así que si hay alguna otra manera que no sea mediante codigo de poner la ruta en la bd, lo he intentado poner a mano y o no se puede o lo he hecho mal y bueno el problema le tengo en este código que me da error en el COPY, si hay alguna otra manera de hacerlo más sencilla o lo que sea agradecería que lo dijerais.

<?php




$ruta = "../imagenes/".$_FILES['archivoupload']['name'];
if(!copy($_FILES['archivoupload']['tmp_name'], $ruta)) { 
echo "error al copiar el archivo"; 
} else { 
echo "archivo subido con exito"; 
include ("conexion.php");
$link=Conectarse();

include ("tumbnailbasico.php");
$thumb=thumbjpeg($ruta,100);



$nombre = $_POST["nombre"]; 


mysql_query("INSERT INTO imagen (nombre,imagen,imagenr) VALUES ('$nombre','$ruta','$thumb')"); 

echo "Ver imagen subida <a href='ver.php?nombre=$nombre'>aquí</a>"; 
echo "<br>";
echo "Ver thumbnail <a href='ver.php?nombre=$thumb'>aquí</a>"; 
echo "<br>";
echo "Ver otras imagenes <a href='lectura.php'>aquí</a>";
echo "<br>";
echo "Ver galeria <a href='paginacion.php'>aquí</a>";
echo "<br>";
} 
?>
scumah

No tengo ni pajolera de PHP, así que ya me corregirán si digo alguna cagada xD

No sé por qué en el copy pones tmp_name en lugar de name... Si está mal y debe ser name, el copy petará porque no encuentra el archivo donde le indicas.

También puedes considerar usar move_uploaded_file() en lugar del copy(), que, ya te digo que ni idea de PHP, pero creo que es más adecuado.

1 respuesta
DredG

#2 con el move he conseguido quitar el error del copy y ahora me sale Notice: Undefined index: archivoupload y yo creo que está todo bien no? debería de pillarlo

<body>
<form method="post" action="guardar.php" enctype="multipart/form-data"> 

Nombre: <input type="text" name="nombre" maxlength="100"><br> 

Imagen: <input type="file" name="archivoupload" size="40"><br> 

<p><input type=button name="Submit" value="Subir" onclick="comprueba_extension(this.form, this.form.archivoupload.value)"> </p>

</form> 
scumah

Me da a mí que el pete sigue estando en el move_uploaded_file xD Si te dice undefined index es que estás intentando acceder a un elemento de un array que no existe. ¿Has cambiado "tmp_name" por "name"?

Meleagant

¿Entiendo que lo que pretendes es guardar la imagen como datos binarios en la BBDD en lugar de como un fichero en el servidor?

En dicho caso, echa un ojo a esto:

http://www.weberdev.com/ViewArticle/Saving-Images-in-MySQL

Si no, no he entendido nada xD

DredG

la verdad es que estoy liado entero lo que quiero hacer es sacar las imagenes mediante php guardando la ruta así que si no se hace así... alguien puede ilustrarme?

1 respuesta
Meleagant

Pues no sé cuál es el problema entonces.

Guardas en la BBDD la parte de la ruta que varía, y la cargas cuando vayas a generar la etiqueta <img>. ¿Qué es lo que no te funciona?

2 respuestas
scumah

#7 Me da a mí que lo que le peta creo yo es el guardar la imagen subida en el sistema.

#6 ¿Has cambiado lo del tmp_name? Sry si soy pesado, es la tercera vez que te lo digo, pero como no me lo has contestado pues no sé si lo has probado xD

1 respuesta
DredG

#7 Si lo dejo con el copy me salen estos errores
http://www.subirimagenes.com/imagen-sinttulo-7483711.html

y si quito el copy y pongo lo que me han dicho más arriba pues solo me quedan los dos primeros errores

#8 perdona si si lo he cambiado

willsmith

La imagen se guarda en un directorio este directorio tiene que tener permisos de escritura en 777

2 respuestas
DredG

#10 y exactamente como quedaría el código? me harías un gran favor

1 respuesta
willsmith

haber, entrar por el ftp pinchas sobre el botón derecho sobre el directorio donde guarda las imágenes y seleccionas la opción del menú desplegable en permisos, no se que cliente ftp usas, y bueno marcas todas las casillas o bien pones 777

DredG

estoy usando wampserver es para un proyecto de clase no estoy usando ningun tipo de ftp ese 777

así?

$ruta = ("../imagenes/",777).$_FILES['archivoupload']['name'];
2 respuestas
Amazon

#11 Yo uso esto (perdón que no cambie los nombres por algo más descriptivo)

move_uploaded_file($_FILES["file"]["tmp_name"],
			"../imagenes/" . $_FILES["file"]["name"]);
willsmith

#13 vas mal, para cambiar los permisos desde php seria chmod($dir,0777) he iría en una linea aparte.

El cliente FTP es un protocolo

PandragoQ

#10 permisos 777?? Mejor no, ok?... en vez de eso cambia el owner del directorio por el usuario que levante tu servidor web y pon los permisos como 770.

Esta un poco feo dar soluciones a problemas, que lo que generan son problemas todavia mas grandes.

Sin acritud y tal :)

scumah

#13 No creo que sea un problema de permisos en local. Y además yo te he liado con lo de tmp_name, lo tenías bien y yo soy un inútil xDD prueba esto (He dejado sólo lo importante, añade tus movidas):

<?php

$ruta = "../imagenes/";
$ruta = $ruta . basename($_FILES['archivoupload']['name']);

if(!move_uploaded_file($_FILES['archivoupload']['tmp_name'], $ruta)) { 
echo "error al copiar el archivo"; 
} else { 
echo "archivo subido con exito"; 
} 
?>

A mí me ha funcionado :P

1 respuesta
DredG

#17 ahora consigo que se guarde en la base de datos aunque no consigo que la imagen se guarde en la carpeta, muchas gracias

ya me retiro hoy ya vere que puedo hace rmañana por clase

1 respuesta
Merkury

#18 Y porque no haces una subida via FTP (programandola en php) que meta todo en el directorio de img (o donde quieras eh!) y capturas el nombre de archivo y lo metes en la BBDD.

Yo creo que te estas haciendo la picha un lio porque no sabes muy bien que quieres hacer XD

Mira aquí te dejo un tuto de como subir archivos via FTP, luego lo de capturar el nombre y montar el dato de la ruta + nombre en la BBDD te lo curras tu en PHP.

http://blog.unijimpe.net/ftp-upload-con-php/

Usuarios habituales

  • Merkury
  • DredG
  • scumah
  • PandragoQ
  • willsmith
  • Amazon
  • Meleagant