javascript - 将 JSON 文件传递​​到 php 服务器,然后将其中的数据保存到 Mysql DB

标签 javascript php jquery mysql

正如标题所示,我正在编写一个网络应用程序作为学校项目的一部分。我的目标是让某人上传 json 文件并将其一些数据保存在 Mysql 上的表中,以便在应用程序中提供更多功能。

我的问题是如何精确地将 JSON 文件传递​​给 PHP,然后从那里解析它以将所需的数据存储到数据库中。我尝试在 Jquery fileupload 的帮助下发送它,因为 json 文件可能相当大,并且在 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() 中的错误表明 $file 变量是一个数组而不是字符串,因此我尝试将 $_FILES 变量作为参数传递再次没有运气。

这是正确的方法吗?如果是的话,我缺少什么或者我应该使用其他方法吗?

感谢您的长时间阅读和您提前投入的时间!抱歉,如果这听起来很愚蠢,但我对 PHP 很陌生。

最佳答案

$_FILES['uploadingfile'] 是一个数组,其中包含有关上传文件的多条信息。所以你需要使用:

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

获取存储数据的文件名。

参见Handling File Uploads了解完整详细信息。

关于javascript - 将 JSON 文件传递​​到 php 服务器,然后将其中的数据保存到 Mysql DB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60875141/

相关文章:

php - 我应该根据他们在 symfony2 和 mysql 中的角色制作一个或多个用户表

javascript - 每当调用其他类中的方法时调用该方法

javascript - 如何将对象从前端传递到 Struts 2

javascript - 是否需要使用 load() 两次将同一文件附加到两个不同的元素

javascript - 在低缩放级别之前,Google map 点不会显示

javascript - JIT - 将 Spacetree 保存为图像

PHP system() 引发命令未找到错误

javascript - 为什么IE会限制本地HTML页面的JavaScript文件?

javascript - 获取 NEW 对象参数的 HTML 输入范围值

php - MVC 框架中的模型应该有多粗粒度?