如何使用javascript保存时覆盖现有文件

时间:2016-09-12 15:35:13

标签: javascript save

我正在尝试使用以下代码在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);
});

有可能吗?如果是,有人可以告诉我该怎么做?

谢谢

1 个答案:

答案 0 :(得分:5)

没有。这是不可能的。您可以使用建议的文件名触发下载,但是您无法在访问者的计算机上选择文件来简单地覆盖。那将是一个重大的安全问题。