首页 > 解决方案 > 使用 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();
}

有什么建议吗?

亲切的问候!

标签: javascriptjson

解决方案


复制粘贴自:从浏览器下载 JSON 对象作为文件

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>标签,click()然后


推荐阅读