我正在开发一个简单的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();
}
有什么建议吗?
亲切的问候!
答案 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中。在将数据保存到文件之前,请确保数据安全,因为它将使用给出的所有内容并将其保存到您的文件中!