PHP - Insertar Imagenes a base de Datos Mysql con Php

 
Vista:

Insertar Imagenes a base de Datos Mysql con Php

Publicado por Andres (5 intervenciones) el 20/03/2020 20:43:41
Buenas tardes, tengo una duda, he estado trabajando con PHP para subir datos a una base de datos de Mysql, este formulario captura texto e imagenes pero no lo envia a una sola tabla sino a otras cuatros, la cuestion es que la tabla de las imagenes almacena valores Longblob pero al momento de capturar la imagen mediante el metodo $_post que lo realiza en el mismo archivo las imagenes no son montadas mas este almacena un binario generico a veces 10 b o 6 b, he intentado otros metodos como $FILE[image][tmp_img] sin embargo no me captura la imagen, este siempre permanece vacio, de antemano muchas gracias por la ayuda, el post lo realizo en el mismo archivo no utilizo un archivo intermedio pues al intentarlo todos los datos ya sean imagenes o texto quedaban vacios.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Julio
Val: 2.007
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Insertar Imagenes a base de Datos Mysql con Php

Publicado por Julio (830 intervenciones) el 20/03/2020 21:03:32
Hola.

Para subir imágenes, no se suele utilizar el guardar el blob en la base de datos (entre otras cosas porque si subes muchas imágenes acabará ocupando un montón de memoria). Aquí te dejo un código ejemplo para subir. Recuerda configurarte correctamente la variable $directorio al lugar donde quieres que se te suban las imágenes y que el input file tiene de nombre 'archivo', cámbialo al que tú tengas.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
 
$extensiones = array('image/jpg', 'image/jpeg', 'image/png');
$tamanyo_maximo = 1024 * 1024 * 4;
 
$error = $_FILES['archivo']['error'];
 
if ($error === UPLOAD_ERR_OK) {
	if (in_array($_FILES['archivo']['type'], $extensiones)) {
		if ($_FILES['archivo']['size'] <= $tamanyo_maximo) {
			$directorio = 'C:/xampp/htdocs/archivos/';
			$archivo_subido = $directorio . basename($_FILES['archivo']['name']);
 
			if (move_uploaded_file($_FILES['archivo']['tmp_name'], $archivo_subido)) {
				echo 'Se ha subido el archivo correctamente';
			} else {
				echo 'Ha ocurrido un error mientras se movía el archivo';
			}
		} else {
			echo 'El archivo excede el tamaño máximo de ' . $tamanyo_maximo . ' bytes';
		}
	} else {
		echo 'La extensión es incorrecta. El archivo no ha podido subirse';
	}
} else {
	if ($error === UPLOAD_ERR_INI_SIZE || $error === UPLOAD_ERR_FORM_SIZE) {
		echo 'El tamaño del archivo sobrepasa el máximo permitido';
	} elseif ($error === UPLOAD_ERR_PARTIAL || $error === UPLOAD_ERR_NO_FILE) {
		echo 'El archivo no ha podido subirse correctamente';
	} elseif ($error === UPLOAD_ERR_NO_TMP_DIR) {
		echo 'No existe la carpeta temporal, contacta con el proveedor del hosting';
	} elseif ($error === UPLOAD_ERR_CANT_WRITE || $error === UPLOAD_ERR_EXTENSION) {
		echo 'Ha ocurrido un error durante la subida del archivo';
	}
}
 
?>

-----------------------------
Aprende la programación desde una perspectiva básica y simplista en Programación Básica
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Insertar Imagenes a base de Datos Mysql con Php

Publicado por Andres (5 intervenciones) el 20/03/2020 21:18:13
Muchas gracias, y a la hora de guardar esas rutas a mysql para almacenar la ruta y poder mostrar las imagenes como se haria?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Julio
Val: 2.007
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Insertar Imagenes a base de Datos Mysql con Php

Publicado por Julio (830 intervenciones) el 20/03/2020 21:34:18
En la base de datos guarda la ruta hacia el archivo (por ejemplo, si está en http://www.ejemplo.com/imagenes/imagen_1.jpg o puedes guardar la ruta física como C:\xampp\htdocs\imagenes\ejemplo\imagen_1.jpg aunque, normalmente, guardarás algo así como imagenes/imagen_1.jpg y la ruta, sea física o url, ya la guardas en otro lado porque puede cambiar cuando muevas la web). Así, cuando tengas que recuperar la imagen, simplemente vas a la base de datos, obtienes la ruta donde está la imagen y la muestras. No necesitas descargarla ni nada, pues la imagen estará en la carpeta que quieres y tendrá una ruta de acceso.

No sé si me he explicado bien.

-----------------------------
Aprende la programación desde una perspectiva básica y simplista en Programación Básica
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Insertar Imagenes a base de Datos Mysql con Php

Publicado por Andres (5 intervenciones) el 20/03/2020 21:37:29
Muchas gracias amigo por la ayuda pero sin embargo sigue sin capturarme la imagen, hice los cambios a las especificaciones de mi codigo pero sin embargo no la ha almacenado
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Julio
Val: 2.007
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Insertar Imagenes a base de Datos Mysql con Php

Publicado por Julio (830 intervenciones) el 20/03/2020 21:41:19
Coloca el código a ver qué tienes.

-----------------------------
Aprende la programación desde una perspectiva básica y simplista en Programación Básica
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Insertar Imagenes a base de Datos Mysql con Php

Publicado por Andres (5 intervenciones) el 20/03/2020 21:46:58
1
2
3
4
5
6
7
8
</div>
    <div id="collapse16" class="panel-collapse collapse in">
    <div class="panel-body">
    <div class="file-upload">
    <td>
    <input type="file" name="phome" class="file-upload-input with-preview" multiple title="Click to add files" maxlength="1" accept="jpg|png|jpeg" style="width: 25%;"> <span>Add Home</span>
    </td>
</div>

este es el input esta contenido dentro de un form que recibe tambien texto y este es el metodo que estaba usando

1
2
3
$query3 = "INSERT INTO room (type1, bed1, food1, date1, type2, bed2, food2, date2, type3, bed3, food3, date3, type4, bed4, food4, date4, type5, bed5, food5, date5, type6, bed6, food6, date6, type7, bed7, food7, date7, type8, bed8, food8, date8, id_home) VALUES ( '$_POST[type1]', '$_POST[bed1]', '$_POST[food1]', '$_POST[date1]', '$_POST[type2]', '$_POST[bed2]', '$_POST[food2]', '$_POST[date2]', '$_POST[type3]', '$_POST[bed3]', '$_POST[food3]', '$_POST[date3]', '$_POST[type4]', '$_POST[bed4]', '$_POST[food4]', '$_POST[date4]', '$_POST[type5]', '$_POST[bed5]', '$_POST[food5]', '$_POST[date5]', '$_POST[type6]', '$_POST[bed6]', '$_POST[food6]', '$_POST[date6]', '$_POST[type7]', '$_POST[bed7]', '$_POST[food7]', '$_POST[date7]', '$_POST[type8]', '$_POST[bed8]', '$_POST[food8]', '$_POST[date8]', Last_insert_id())";
$encodedData= chunk_split(base64_encode(file_get_contents($_POST['phome'])));
$query4 = "INSERT INTO photo_home (phome, pliving, parea1, parea2, parea3, parea4, pbath1, pbath2, pbath3, pbath4, proom1, proom2, proom3, proom4, proom5, proom6, proom7, proom8, id_home) VALUES ('$img', '$_POST[pliving]', '$_POST[parea1]', '$_POST[parea2]', '$_POST[parea3]', '$_POST[parea4]', '$_POST[pbath1]', '$_POST[pbath2]', '$_POST[pbath3]', '$_POST[pbath4]', '$_POST[proom1]', '$_POST[proom2]', '$_POST[proom3]', '$_POST[proom4]', '$_POST[proom5]', '$_POST[proom6]', '$_POST[proom7]', '$_POST[proom8]', Last_insert_id())";
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Julio
Val: 2.007
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Insertar Imagenes a base de Datos Mysql con Php

Publicado por Julio (830 intervenciones) el 20/03/2020 23:03:47
Eh..., ¿qué estás haciendo ahí? O faltan cosas o no lo entiendo. ¿Dónde subes la imagen? Ah vale, que estás utilizando el método blob. ¿Y el código que te he puesto antes lo has probado?

-----------------------------
Aprende la programación desde una perspectiva básica y simplista en Programación Básica
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar