Respuesta: Tutorial ejemplo: Subir archivos a tu BD (guardando en la BD en binario) Hola A Todos.....Bueno, yo tengo una duda, yo tengo un sistema de usuarios y quiero que cuando suban su foto se guarde directamente a la base de datos, pero la mia es distinta la que ustedes usan, porque ustedes usan una base de datos para insertarla en una tabla, pero donde yo quiero insertar el dato, esta en una segunda tabla, es decir, la base de datos, una tabla, y dentro de esa tabla esta la otra donde voy a insertar el dato. Ahora bien yo deseo insertar a esa tabla, en el campo que dice avatar, la url del archivo subido por el upload, y estoy usando los siquientes codigos.
Creo un formulario llamado formulario.php
<form enctype="multipart/form-data" action="cargando.php" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="100000">
Subir esta imagen: <input name="imagen" type="file">
<input type="submit" name='submit' value="Subir Fichero">
</form>
luego uni en la segunda pagina, el scritp que sube la foto, con el del amigo que quedaria :
cargarndo.php
<?php
if(isset($submit)){
if (is_uploaded_file($_FILES['imagen']['tmp_name'])) {
//revisamos que sea jpg
if ($_FILES['imagen']['type'] == "image/jpeg" || $_FILES['imagen']['type'] == "image/pjpeg"){
//nuevo nombre para la imagen
$nuevoNombre = time().".jpg";
//movemos la imagen
move_uploaded_file($_FILES['imagen']['tmp_name'], "fotografias/$nuevoNombre");
//obtenemos la inforamción
$data = GetImageSize("fotografias/$nuevoNombre");
//mensaje de éxito
echo "<img src='fotografias/$nuevoNombre' $data[3]> <br> imagen $nuevoNombre subida con éxito";
}else{
echo "Formato no válido para fichero de imagen";
}
} else {
echo "Error al cargar imagen: " . $_FILES['imagen']['name'];
}
}
//Primero, arranca el bloque PHP y checkea si el archivo tiene nombre. Si no fue asi, te remite de nuevo al formulario de inserción:
// No se comprueba aqui si se ha subido correctamente.
//establece una conexión con la base de datos.
// acá iba la condición para ver si se habia subido un archivo de lo contrario te regresaba al formulario, esta la borre.
$localhost= "localhost";
$usuario= "miusuario";
$contrasena= "mipass";
$db="enmaracay_archivos";
$conexion = mysql_connect("$localhost","$usuario","$contrasena ");
mysql_select_db("$db",$conexion) or die("No se puede seleccionar BD");
// a continuación puse la otra condición que me recomentaste
if (!empty($_FILES['archivo']['name'])){
// archivo temporal (ruta y nombre).
$binario_nombre_temporal=$_FILES['archivo']['tmp_name'] ;
// leer del archvio temporal .. el binario subido.
// "rb" para Windows .. Linux parece q con "r" sobra ...
$binario_contenido = addslashes(fread(fopen($binario_nombre_temporal, "rb"), filesize($binario_nombre_temporal))); //linea 19
// Obtener del array FILES (superglobal) los datos del binario .. nombre, tamaño y tipo.
$binario_nombre=$_FILES['archivo']['name'];
$binario_peso=$_FILES['archivo']['size']; ;
$binario_tipo=$_FILES['archivo']['type'];
//insertamos los datos en la BD.
$consulta_insertar = "INSERT INTO archivos (id, avatar, archivo_nombre, archivo_peso, archivo_tipo) VALUES ('', '$binario_contenido', '$binario_nombre', '$binario_peso', '$binario_tipo')";
mysql_query($consulta_insertar,$conexion) or die("No se pudo insertar los datos en la base de datos.");
header("location: index.php"); // (linea 31) si ha ido todo bien
exit;
}
//fin de la condición y empieza el caso contrario
else {
$consulta_insertar = "INSERT INTO archivos (id, archivo_binario, archivo_nombre, archivo_peso, archivo_tipo) VALUES ('', '$binario_contenido', '$binario_nombre', '$binario_peso', '$binario_tipo')";
mysql_query($consulta_insertar,$conexion) or die("No se pudo insertar los datos en la base de datos.");
header("location: index.php"); // si ha ido todo bien
exit;
}
?>
Yo lo hice usando la base de datos que dieron y carga la imagen perfectamente, pero yo quiero cambiar los datos que inseta, aunque no me inserto ninguno, no quiero ni peso, ni tipo, solo que guarde la direccion url de la foto en la base de datos, y me sale arriba la imagen y diciendome que la cargue bien, pero mas abajo esto :
Warning: Cannot modify header information - headers already sent by (output started at /home/enmaraca/public_html/22.php:13) in /home/enmaraca/public_html/22.php on line 61
Me podran Ayudar? |