我正在尝试使用以下代码在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://abe.ufl.edu/bmpmodel/Shivam/v3_shivam/success.html#",2000);
});
有可能吗?如果是,有人可以告诉我该怎么做?
谢谢
答案 0 :(得分:5)
没有。这是不可能的。您可以使用建议的文件名触发下载,但是您无法在访问者的计算机上选择文件来简单地覆盖。那将是一个重大的安全问题。