Cómo almacenar y recuperar imágenes de datos de tipo: image / jpeg; base64?

Anindya:

Estoy tratando de subir imágenes desde el front-end para mi servidor PHP. Estoy convertir la imagen en data:image/jpeg;base64el uso FileReader()de JavaScript. Aquí está mi código JS:

fileSelectHandler = (event) => {
        let file = event.target.files[0];
        console.log(file);
        const reader = new FileReader();
        reader.onload = () => {
            this.setState({
                src: reader.result
            });
        }
        reader.readAsDataURL(file);
    }


    postImage = () => {
        var http = new XMLHttpRequest();
        var url = 'http://localhost:9090/assign/uploadimage.php';
        var params = 'source=' + this.state.src;
        http.open('POST', url, true);
        http.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
        http.onreadystatechange = function () {
            if (http.readyState == 4 && http.status == 200) {
                console.log(http.responseText);
            }
        }
        http.send(params);
    }

Insertar el "image / jpeg; base64, ..." completa cadena en mi base de datos MySQL (en el tipo de texto largo).

$conn = new mysqli("localhost","root","","temp_db") or die('connection-error');

if(isset($_POST['source'])){
    $data = $_POST['source'];
    $stmt = $conn->prepare("insert into f_data values (?)");
    $stmt->bind_param("s",$data);
    $done = $stmt->execute();
    echo "- inserted -";
    $stmt->close();   
}

Pero cuando traté de mostrar las imágenes después de recuperar las src-enlaces de la base de datos, las imágenes son destruidos o no aparecen en absoluto. Aquí está el código:

$conn = new mysqli("localhost","root","","temp_db");
if(!$conn){
    die("connection-error-occured");
}

$stmt = $conn->prepare("select * from f_data");
$stmt->execute();

$result = $stmt->get_result();
if($result->num_rows != 0){
    while($row = $result->fetch_assoc()){ ?>
    <img src = "<?php echo $row['src']; ?>" />
    <?php
    }
}

¿Cómo debo almacenar y recuperar adecuadamente dicha imagen-datos en PHP?

Anindya:

Finalmente Resuelto! El problema fue que la base64cadena de datos recibida por el servidor PHP faltaba el +símbolo. Los +símbolos fueron sustituidos por white spaces. Incluso el urldecode()de PHP no estaba leyendo el +símbolo correctamente.

Así que mediante la sustitución de aquellos white spacespor +funcionó!

Interfaz:

postImage = () => {
        var http = new XMLHttpRequest();
        var url = 'http://localhost:9090/assign/uploadimage.php';
        var params = 'source=' + encodeURI(this.state.src);
        http.open('POST', url, true);
        http.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
        http.onreadystatechange = function () {
            if (http.readyState == 4 && http.status == 200) {
                console.log(http.responseText);
            }
        }
        http.send(params);
    }

Back-end:

<?php
//replacing ' ' with '+'
function full_decode($str){
    return str_replace(" ","+",$str);
}

$conn = new mysqli("localhost","root","","temp_db");
if(!$conn){
    die("connection-error");
}

if(isset($_POST['source'])){
    $data = json_decode($_POST["source"],true);
    $data_src = urldecode($data['src']);
    $full_src = full_decode($data_src);
    $stmt = $conn->prepare("INSERT INTO f_data VALUES (?)");
    $stmt->bind_param("s",$full_src);
    $stmt->execute();
    $stmt->close();
    echo "inserted";
}
?>

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

Cómo almacenar y recuperar datos de la base de datos de firebase (v9.0.0)

¿Cómo almacenar y recuperar Salt desde y hacia una base de datos?

¿Cómo puedo almacenar correctamente las imágenes en un servidor y hacer referencia a ellas en una base de datos?

¿Cómo almacenar la fuente de imágenes de C # en la base de datos?

Cómo almacenar y recuperar el contenido de la imagen de la base de datos usando Laravel

¿Cómo puedo almacenar y recuperar la variable de sesión de Django en / desde la base de datos?

Cómo almacenar múltiples imágenes en la base de datos Laravel

¿Cómo almacenar la publicación de blog php en la base de datos mysql con imágenes y otro formato de texto html?

¿Cómo transfiero datos base64 a una secuencia de imágenes legible sin guardar localmente?

¿Cómo SIMPLEMENTE recuperar imágenes del almacenamiento de base de fuego y mostrarlas, usando react?

Obtener datos de matriz de Redis: cómo almacenar y recuperar

Obtener datos de matriz de Redis: cómo almacenar y recuperar

¿Cómo almacenar y recuperar datos de los últimos 30 días de SQLite?

Cómo almacenar y recuperar datos de relaciones de uno a varios en AWS dynamodb

¿Cómo mostrar imágenes (base64 a mapa de bits) en Image Slider?

¿Cómo almacenar y recuperar datos en userdefault? (Ejemplo: matriz de estructura)

obtener imágenes después de la comparaciónApi y almacenar datos en la base de datos con nombres coincidentes

Cómo almacenar grandes cantidades de imágenes para recuperar con html

Cómo almacenar grandes cantidades de imágenes para recuperar con html

¿Cómo almacenar imágenes en la base de datos sqlite en Xamarin Forms para la aplicación multiplataforma?

¿Cómo puedo almacenar varias imágenes en una base de datos con una aplicación Blazor?

¿Cómo puedo almacenar varias imágenes en una base de datos con una aplicación Blazor?

¿Cómo recuperar datos cuando tengo el siguiente tipo de datos en una base de datos?

Cómo almacenar datos de tipo moneda grande en la base de datos

¿Cómo se ha podido recuperar y almacenar todos los documentos de identificación de la base de datos FireStore al adaptador serie

¿Cómo almacenaré la ruta de la carpeta de imágenes en la base de datos MYSQL y mostraré la imagen en una página web a través de PHP y XAMPP?

Cómo subir varias imágenes a la base de datos de Firebase y recuperarlas

¿Cómo funciona el tipo de datos varbinary para almacenar imágenes para que un usuario las vea en el front-end de Access?

Almacenar y recuperar datos para aplicaciones personalizadas de Shopify