Javascript 使用node.js保存图像时覆盖文件警告

Javascript 使用node.js保存图像时覆盖文件警告,javascript,windows,macos,node.js,filesystems,Javascript,Windows,Macos,Node.js,Filesystems,我有一个用javascript编写的应用程序,用户可以将图像保存到磁盘上。这涉及node.js。如果我要求覆盖以前保存的图像,当从操作系统收到我将要覆盖该文件的警告时,我会得到好坏参半的结果。如果试图通过从“保存文件”对话框中选择旧图像来覆盖图像,则会提示警告。如果我通过简单地键入相同的文件名来覆盖图像,它会覆盖图像,但不会给出任何警告 node.js函数: var fs = require('fs'); exports.buildFile = function(name, value) {

我有一个用javascript编写的应用程序,用户可以将图像保存到磁盘上。这涉及node.js。如果我要求覆盖以前保存的图像,当从操作系统收到我将要覆盖该文件的警告时,我会得到好坏参半的结果。如果试图通过从“保存文件”对话框中选择旧图像来覆盖图像,则会提示警告。如果我通过简单地键入相同的文件名来覆盖图像,它会覆盖图像,但不会给出任何警告

node.js函数:

var fs = require('fs');
exports.buildFile = function(name, value) {
    if (name.search(/\.[a-z]+/) == -1) {
        name = name + ".png";
    }
    var img = new Buffer(value, encoding='base64');
    fs.writeFile(name, img, function(err) {
        if(err) {
            console.log(err);
        } else {
            console.log("The file was saved!");
        }
    });
};
只需检查用户是否指定了文件类型,如果没有,则追加.png并写入磁盘

前端:

var global_imageToSave = null;
function screen_shot(fn) {
    global_currModel.menuShouldHide = true;
    global_currModel.setTextDeletables(false,true);

    html2canvas($('body'), {
        onrendered: function(canvas) {
        global_imageToSave = canvas.toDataURL("image/png").split(',')[1];
        global_currModel.menuShouldHide = false;
        global_currModel.draw();
        sc.buildFile(fn, global_imageToSave);
      }
    });
}
用于拍摄屏幕截图,然后传递从html对话框接收的数据和文件名

HTML对话框onchange事件:

$('[id^="model_sales_asset"]').live("pagecreate", function() {
    $(this).find('.fileDialog').change(function() {screen_shot($('.fileDialog').val());});
});
正如您所看到的,文件类型是在调用操作系统保存文件之前追加的,因此我无法理解为什么只有在通过选择文件自动输入文件名时,它才与文件名匹配


这种行为在windows 7和8以及mac os 10.7上是一致的。

问题不在于名称,而在于我相信的文件。html2canvas和普通文件上传之间的编码不同。我认为操作系统在一种情况下检测到一个文件的修订,在另一种情况下检测到一个完全不同的文件


最好的建议是自己进行检测,这是正确的方法。检查文件是否存在,然后发出警告。否则,使用不同的系统和插件会得到不同的结果。

我对此进行了思考,并担心有时会收到一个警告,有时会收到两个警告,一个来自我,一个来自操作系统。你知道我能否压制操作系统吗?