使用javascript应用程序将JSON文件保存到服务器

时间:2018-12-12 05:56:07

标签: javascript json

我正在开发一个简单的Javascript应用程序,其中用户具有一些图像(存储在我的计算机中),并且他能够对其进行注释,然后将注释另存为JSON文件。

该应用程序非常轻巧简单,它不是应用程序服务器。 但是,我需要将这些JSON文件保存到将作为服务器的机器上。

由于我无法将Javascript用于IO,是否有任何简便的方法来保存这些文件而无需实现应用服务器?

我使用Blob下载文件。

function project_save_confirmed(input) {
    if ( input.project_name.value !== _onco_settings.project.name ) {
        project_set_name(input.project_name.value);
    }

    // onco project
    var _onco_project = { '_onco_settings': _onco_settings,
        '_onco_img_metadata': _onco_img_metadata,
        '_onco_attributes': _onco_attributes };

    var filename = input.project_name.value + '.json';
    var data_blob = new Blob( [JSON.stringify(_onco_project)],
        {type: 'text/json;charset=utf-8'});

    save_data_to_local_file(data_blob, filename);

    user_input_default_cancel_handler();
}
function save_data_to_local_file(data, filename) {
    var a      = document.createElement('a');
    a.href     = URL.createObjectURL(data);
    a.download = filename;
    a.click();
}

有什么建议吗?

亲切的问候!

2 个答案:

答案 0 :(得分:1)

从以下位置复制粘贴:Download JSON object as a file from browser

$data[] = array(
 'id' => $res->family_id,
 'parent_id' => $res->parent_id,
 'text' => $res->family_name,
 );

我相信这可以满足您的要求,只需确保已设置正确的标题,将其压入function downloadObjectAsJson(exportObj, exportName){ var dataStr = "data:text/json;charset=utf-8," + encodeURIComponent(JSON.stringify(exportObj)); var downloadAnchorNode = document.createElement('a'); downloadAnchorNode.setAttribute("href", dataStr); downloadAnchorNode.setAttribute("download", exportName + ".json"); document.body.appendChild(downloadAnchorNode); // required for firefox downloadAnchorNode.click(); downloadAnchorNode.remove(); } 标记,然后<a>

答案 1 :(得分:0)

您可以在php中执行此操作:

<?php
//notice this will put WHATEVER is in json into file
$filename="config.json";
if (isset($_POST["json"])) {
    file_put_contents($filename,$_POST["json"]);
}
?>

然后在JS端:

var fd=new FormData();
fd.append("json", JSON.stringify(_onco_project));
fetch("https://url.com",{method:"POST",body:fd})

说明:JS创建一个新的formdata,并将"json"设置为字符串化的json,然后将其发送到服务器。 php服务器接受此文件,并将其直接放入$ filename中。在将数据保存到文件之前,请确保数据安全,因为它将使用给出的所有内容并将其保存到您的文件中!