|     Inicio    |   |         |  |   FOROS      |  |      |      
   Elastix - VoIP B4A (Basic4Android) App inventor 2 PHP - MySQL
  Estación meteorológica B4J (Basic4Java) ADB Shell - Android Arduino
  Raspberry Pi Visual Basic Script (VBS) FireBase (BD autoactualizable) NodeMCU como Arduino
  AutoIt (Programación) Visual Basic Cosas de Windows Webs interesantes
Translate:
Búsqueda en este sitio:


.

App inventor 2 en español
Cómo programar los teléfonos móviles con Android
mediante App inventor 2 - Juan Antonio Villalpando

--- PHP y MySQL en App Inventor 2 --

Volver al índice del tutorial de PHP y MySQL

____________________________

366.- App inventor y MySQLi. Imágenes en la base de datos. BLOB. (II)

p366_mysqli_imagenes_blob.aia

- Mediante el Selector de imagen vamos a seleccionar una imagen de la Galería de imágenes y la vamos a subir a nuestra base de datos MySQLi. Las imágenes se guardarán en la base de datos con el tipo BLOB.

- Según el tamaño requerido hay distintos tipos de BLOB.

- TINYBLOB: admite hasta 255 caracteres.
- BLOB:
admite hasta 65535 caracteres.
- MEDIUMBLOB:
admite hasta 16777215 caracteres.
- LONGBLOB:
Permite hasta 4294967295 caracteres .

BLOB significa: Binary Large Object (Objeto Binario Grande) , puede contener imágenes o cualquier tipo de datos binarios.

- En nuestro ejemplo utilizaremos MEDIUMBLOB.

- Aquí vimos cómo subir datos a MySQLi por GET y POST:

- https://community.appinventor.mit.edu/t/mysqli-php-get-post-insert-update-delete-show-000webhost/7241

- Aquí vimos cómo subir un archivo a un servidor:

- https://community.appinventor.mit.edu/t/upload-file-to-server-hosting-by-php-encode-file-to-base-64-extension/7445

______________________________________________
1.- Creación de la tabla en la base de datos.

- Mediante PhpMyAdmin crearemos en nuestra base de datos una tabla llamada dibujos con 4 columnas:

id, imagen, extension, nombre. Observa que imagen es: mediumblob

______________________________________________
- Diseño.

______________________________________________
- Bloques.

______________________________________________
- PHP.

- El archivo se guardará de dos forma, como tal archivo en el directorio donde se encuentra el código PHP y como BLOB en la base de datos.

blob_upload.php

<?php
// Juan A. Villalpando
// KIO4.COM

 // 1.- IDENTIFICACION nombre de la base, del usuario, clave y servidor
$db_host="localhost";
$db_name="id13313319_kio4";
$db_login="id13313319_juanantonio";
$db_pswd="contraseña";

// 2.- CONEXION A LA BASE DE DATOS
$link = new mysqli($db_host, $db_login, $db_pswd, $db_name);

// 3.- OBTENER ARCHIVO - GET FILE
  $file = file_get_contents('php://input');
   if (file_put_contents($_GET['imagen'],$file == TRUE))  {
   
		$nombre = $_GET['imagen'];
		$extension = pathinfo($nombre, PATHINFO_EXTENSION);
		// $extension = mime_content_type($nombre);
		
		// Archivo a MySQLi. BLOB. - File to MysQLi BLOB.
		$blob = mysqli_real_escape_string($link, $file);
		$resultado = mysqli_query($link, "INSERT INTO dibujos (imagen, extension, nombre) VALUES ('$blob', '$extension', '$nombre')");
		mysqli_close($link);
		
		// Archivo al directorio actual. - File to actual directory
		$fp = fopen($nombre, 'r+b');
		$archivo = fread($fp, filesize($nombre));
		fclose($fp);
		echo "Guardado. Saved."; 
   } else {
	echo "Error";  
   }
?>

______________________________________________
______________________________________________
______________________________________________
2.- Subir archivo como texto en Base 64. BLOB.

p366B_mysqli_imagenes_blob.aia

- Puede ocurrir que nuestro servidos no nos deje subir archivo mediante PublicarArchivo (PostFile), es este caso podemos codificar el archivo en texto mediante el código Base 64, enviarlo, cuando llegue al servidor se decodifique y se guarde en la base de datos como BLOB.

- La manera de subir un archivo mediante Base 64 lo vimos en: 277_extension_imagen_string.htm (en el foro de la Community)

______________________________________________
- Diseño.

 

______________________________________________
- Bloques.

______________________________________________
- PHP.

- Una vez recibido el archivo como string en Base 64, se podría guardar como texto en la Base de datos, pero en nuestro caso vamos a continuar guardándolo como BLOB.

- El archivo se guardará de dos forma, como tal archivo en el directorio donde se encuentra el código PHP y como BLOB en la base de datos.

blob_upload2.php

<?php
// Juan A. Villalpando
// KIO4.COM

 // 1.- IDENTIFICACION nombre de la base, del usuario, clave y servidor
$db_host="localhost";
$db_name="id13313319_kio4";
$db_login="id13313319_juanantonio";
$db_pswd="contraseña";

// 2.- CONEXION A LA BASE DE DATOS
$link = new mysqli($db_host, $db_login, $db_pswd, $db_name);

// 3.- OBTENER ARCHIVO - GET FILE
	$datos=$_POST;
	$contenido=$datos['contenido'];
	$nombre=$datos['nombre'];
	
	$extension = pathinfo($nombre, PATHINFO_EXTENSION);
	// $extension = mime_content_type($nombre);
    
	$original = base64_decode(str_replace(array('-', '_',' ','\n'), array('+', '/','+',' '), $contenido));

	// Archivo a MySQLi. BLOB. - File to MysQLi BLOB.
	$blob = mysqli_real_escape_string($link, $original);
	$resultado = mysqli_query($link, "INSERT INTO dibujos (imagen, extension, nombre) VALUES ('$blob', '$extension', '$nombre')");
	mysqli_close($link);
	
	// Archivo al directorio actual. - File to actual directory
	$ifp = fopen( $nombre, "wb");
	fwrite($ifp, $original);
	fclose($ifp);
	echo "Guardado. Saved."; 
?>

______________________________________________
______________________________________________
______________________________________________
3.- Listado de archivos. Extraer BLOB y convertirlo a archivo.

p366C_mysqli_imagenes_blob.aia

- Una vez que tengamos los archivos guardados como BLOB en la base de datos, vamos a ver cómo recuperarlos.

- Veremos cómo listar los archivos por nombre.

- Luego podremos poner en el CampoDeTexto el nombre de un archivo, ese archivo se extraerá como BLOB y se copiará en el directorio donde se encuentra el código php, en mi caso siempre se guardará con el nombre temporal.png

- Observarás que el nombre de los archivos son muy largos, por ejemplo: 7918673896754510249.png

- En vez de poner ese nombre tan largo, lo puedes subir con otro nombre que consideres más apropiado.

______________________________________________
- Diseño.

______________________________________________
- Bloques.

______________________________________________
- PHP.

blob_listado.php

<?php
// Juan A. Villalpando
// KIO4.COM

 // 1.- IDENTIFICACION nombre de la base, del usuario, clave y servidor
$db_host="localhost";
$db_name="id13313319_kio4";
$db_login="id13313319_juanantonio";
$db_pswd="contraseña";

// 2.- CONEXION A LA BASE DE DATOS
$link = new mysqli($db_host, $db_login, $db_pswd, $db_name);

$boton = $_POST['boton'];

// 3.- OBTENER ARCHIVO - GET FILE
if ($boton == "btnInsertar"){
	$contenido=$_POST['contenido'];
	$nombre=$_POST['nombre'];
	
	$extension = pathinfo($nombre, PATHINFO_EXTENSION);
	// $extension = mime_content_type($nombre);
    
	$original = base64_decode(str_replace(array('-', '_',' ','\n'), array('+', '/','+',' '), $contenido));

	// Archivo a MySQLi. BLOB. - File to MysQLi BLOB.
	$blob = mysqli_real_escape_string($link, $original);
	$resultado = mysqli_query($link, "INSERT INTO dibujos (imagen, extension, nombre) VALUES ('$blob', '$extension', '$nombre')");
	mysqli_close($link);
	
	// Archivo al directorio actual - File to actual directory.
	$ifp = fopen($nombre, "wb" );
	fwrite($ifp, $original);
	fclose($ifp);
	echo "Guardado."; 
}

// 4.- MOSTRAR NOMBRE DE IMAGENES - SHOW NAME FILES
if ($boton == "btnListado"){
		$sql = "SELECT nombre FROM dibujos"; 
		$result = mysqli_query($GLOBALS['link'],$sql);
		while($row = mysqli_fetch_array($result)) {
		echo $row["nombre"]."\n"; 
		}
}		

// 5.- Copiar BLOB a Archivo temporal.png - Copy file as temporal.png	
if ($boton == "btnCopiar"){
	$nombre = $_POST['nombre'];
	echo $nombre;
	$sql = "SELECT imagen, extension FROM dibujos WHERE nombre='$nombre' ";

	$result = mysqli_query($link,"$sql");
	$row = mysqli_fetch_array($result);
	// Copia el archivo desde el BLOB al directorio actual, siempre con el nombre temporal.png
	// file_put_contents('temporal.'.$row["extension"], $row["imagen"] );
	file_put_contents('temporal.png', $row["imagen"] );
	}
	
mysqli_close($link);
?>

_______________________________

- Mi correo:
juana1991@yahoo.com
- KIO4.COM - Política de cookies. Textos e imágenes propiedad del autor:
© Juan A. Villalpando
No se permite la copia de información ni imágenes.
Usamos cookies propias y de terceros que entre otras cosas recogen datos sobre sus hábitos de navegación y realizan análisis de uso de nuestro sitio.
Si continúa navegando consideramos que acepta su uso. Acepto    Más información