PHPサーバーにJSONファイルを渡した後、MySQLのDBにそれからのデータを保存します

ディミトリスMarkantonatos:

点画として、私は学校のプロジェクトの一環として、Webアプリケーションをコーディングしていますと言います。私の目標は、JSONファイルをアップロードし、アプリでさらにfunctionallity用のMySQLのテーブルにいくつかのデータを保存するために誰かのためです。

私の質問は、あなたがPHPのJSONファイルを渡した後、DBに望んでいたデータを格納するよう、そこからそれを解析することができますどのようにexacltyです。JSONファイルが非常に大きくなることがあり、私はjQueryのファイルアップロードの助けを借りて、それを送信しようとしたとPHP側で私は、関数の使用のfile_get_contentsをしかし、私はそれで運がなかったです。

ここに私の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 + "%");
            })
})
})

そして、ここでの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));
}

中にエラーが気づいたのfile_get_contents()と言う$ファイルの変数iが再び運と引数として$ _FILES変数を渡そうとしましたので、配列でない文字列です。

はい、私は何をしないのですか、私は別のアプローチを使用する必要がある場合、これはそれを行うための方法を正しい方法であると?

長い読み取りと事前にお時間をありがとう!申し訳ありませんが愚かしかし、PHPに新しいイムこの音のいずれかの場合。

Barmar:

$_FILES['uploadingfile']アップロードされたファイルに関するいくつかの情報を持つ配列です。あなたが使用する必要がありますので:

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

データが格納されているファイル名を取得します。

参照ファイルアップロードの処理完全な詳細については。

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=373547&siteId=1