<CLOSED> 如何在使用 javascript 保存时覆盖现有文件
Posted
技术标签:
【中文标题】<CLOSED> 如何在使用 javascript 保存时覆盖现有文件【英文标题】:<CLOSED> how to overwrite an existing file while saving using javascript 【发布时间】:2016-09-12 15:35:12 【问题描述】:我正在尝试使用以下代码将文件保存在 javascript 中
var blob = new Blob([text], type: "text/plain;charset=utf-8");
saveAs(blob, fileName +"_"+unit+".json");
我想用当前文件覆盖与当前文件同名的任何现有文件,而不提示用户。
例如,如果 aaa_bbb.json 存在于用户下载文件夹中,我想将此保存为 aa_bbb.json,它应该直接覆盖现有文件,而不是要求用户按名称 aaa_bbb(1) 保存文件。
完整功能如下:
function showPopup(Attributes)
var htmlString = getWindowContent(Attributes);
map.infoWindow.setTitle("<b>Site Name : </b>"+ fileName+"<br><b>Unit Name : </b>"+ unit+"<br><b>Site Area : </b>"+ polyArea+"<br><b>Select soil types & click </b><button id=\"btn-save\" type=\"submit\">Save to file</button>");
map.infoWindow.setContent(htmlString);
map.infoWindow.resize(300,300);
map.infoWindow.show(map.toScreen(currentClick), map.getInfoWindowAnchor(map.toScreen(currentClick)));
$("#btn-save").click(function()
var array = [];
$("#tbl input[name='link']").each(function()
//for each checked checkbox, iterate through its parent's siblings
subArray = $(this).parent().siblings().map(function()
return $(this).text().trim();
).get();
var cokey = subArray[2];
var mukey = subArray[3];
if(array == null)
var subArray = [];
subArray.push(cokey);
array.push(
"mukey":mukey,
"cokeyArray": subArray
);
else
var bool = false;
array.forEach(function(obj)
if(obj.mukey==mukey)
obj.cokeyArray.push(cokey);
bool = true;
);
if(bool == false)
var subArray = [];
subArray.push(cokey);
array.push(
"mukey":mukey,
"cokeyArray": subArray
);
array.push(mukey);
)
//to print the value of array
var text = getFinalJson(Attributes, array);
var blob = new Blob([text], type: "text/plain;charset=utf-8");
//get date for fileName
getDateFileName();
getParams(url);
//console.log("Before save ",fileName,unit);
saveAs(blob, fileName +"_"+unit+".json");
setTimeout(window.location.href = "http://myaddress.com",2000);
);
有可能吗?如果是,有人可以告诉我该怎么做吗?
谢谢
【问题讨论】:
假设浏览器内的 JS 没有文件系统调用,也许你应该解释一下你使用什么平台/库来提供这个saveAs
调用?对于不标准的函数调用,我们无法为您提供帮助。
如果您访问了一个站点,并且它在没有询问您的情况下覆盖了您计算机上的文件,您会有什么感受?因为这个原因,这是不可能的。
我已经在下面发布了我的完整功能。
@BadHorsie 是的,我同意。我还是问了以防万一。我们可以从建议的名称中删除“(1)”部分吗?
@MarcB — 它是the discontinued Writer API 的一部分。
【参考方案1】:
没有。这是不可能的。您可以使用建议的文件名触发下载,但您不能选择访问者计算机上的文件来简单地覆盖。这将是一个重大的安全问题。
【讨论】:
是的,我想至少我们可以从建议的名称中删除“(1)”部分吗? @HiranavaDas — 不。这是浏览器解决文件名冲突的标准方式。它是在您的代码完成运行很久之后完成的。以上是关于<CLOSED> 如何在使用 javascript 保存时覆盖现有文件的主要内容,如果未能解决你的问题,请参考以下文章
jsp报错java.io.IOException: Stream closed
如何在java中解析具有<map-Map><map-Entry><map-Key><map-Value>的xml文件[关闭]