El paso de un archivo JSON a un servidor php y luego guardar los datos de la misma en una base de datos MySQL

Dimitris Markantonatos:

Como el título dice que soy la codificación de una aplicación web como parte de un proyecto escolar. Mi objetivo es para alguien para cargar un archivo JSON y guardar algunos datos de la misma en una tabla en MySQL para una mayor funcionabilidad en la aplicación.

Mi pregunta es cómo exaclty se puede pasar un archivo JSON en PHP y luego analizarlo desde allí como para almacenar los datos buscados a la DB. Traté de enviarlo con la ayuda de Jquery fileupload como los archivos JSON pueden ser bastante grandes y en el lado php i utiliza la función file_get_contents pero no tenía suerte con él.

Aquí está mi código javascript:

$(document).ready(function () {
        $("#submitupload").click(function(){
            var files = $("#files");
            $("#uploadedfile").fileupload({
                url: 'upload.php',
                dataType: 'json',
                autoUpload: false
            }).on('fileuploadadd', function (e, data) {
                var fileTypeAllowed = /.\.(json)$/i;
                var fileName = data.originalFiles[0]['name'];
                var fileSize = data.originalFiles[0]['size'];
                console.log(data);
                if (!fileTypeAllowed.test(fileName)){
                    $("#error").html('Only json files are allowed');
                }else
                data.submit();
            }).on('fileuploaddone', function (e , data){
                var msg = data.jqXHR.responseJSON.msg;
                $("#error").html(msg);
            }).on('fileuploadprogress', function (e,data){
                var progress = parseInt(data.loaded / data.total * 100, 10 );
                $("#progress").html("Completed: " + progress + "%");
            })
})
})

Y aquí está el PHP:

<?php
include_once ('connection.php');

if (isset($_FILES['uploadingfile'])){

    $file = $_FILES['uploadingfile'];


    $data = file_get_contents($file);

    $array = json_decode($data, true );

    foreach( $array as $row){
        $sql = "INSERT INTO locations(timestamp) VALUES ('".$row["timestampMs"]."')";
        mysqli_query($conn, $sql);
    }
    $msg = array("msg" => "times ok ");
    exit(json_encode($msg));
}

Notado el error en file_get_contents () que indica que el archivo $ variable es una matriz no una cadena, así que traté de pasar la variable $ _FILES como un argumento sin suerte otra vez.

¿Es esta la forma correcta de manera de hacerlo y si es así ¿Qué me falta o debería utilizar otro enfoque?

Gracias por el tiempo de lectura y su tiempo de antelación! Lo siento si cualquiera de esto suena estúpido pero Im nuevo en PHP.

Barmar:

$_FILES['uploadingfile']es una matriz con varias piezas de información sobre el archivo subido. Así que hay que usar:

$file = $_FILES['uploadingfile']['tmp_name'];

para obtener el nombre del archivo donde se almacenan los datos.

Ver Manejo de subida de archivos para más detalles.

Supongo que te gusta

Origin http://10.200.1.11:23101/article/api/json?id=373550&siteId=1
Recomendado
Clasificación