簡體   English   中英

使用node.js保存圖像時覆蓋文件警告

[英]Overwrite a file warning when saving an image with node.js

我有一個用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);
      }
    });
}

使用html2canvas進行屏幕截圖,然后傳遞該數據和從html對話框接收的文件名。

HTML對話框onchange事件:

$('[id^="model_sales_asset"]').live("pagecreate", function() {
    $(this).find('.fileDialog').change(function() {screen_shot($('.fileDialog').val());});
});

如您所見,在調用任何一次OS來保存文件之前,都會附加文件類型,因此我無法弄清楚為什么只有在通過選擇文件自動輸入文件名時,文件名才與文件名匹配。

此行為在Windows 7和8以及Mac OS 10.7上是一致的。

問題不在於名稱,而是我相信的文件。 html2canvas和普通文件上傳之間的編碼不同。 我認為OS在一種情況下正在檢測文件的修訂,而在另一種情況下正在檢測完全不同的文件。

最好的建議是自己進行檢測,這是正確的方法。 檢查文件是否存在,然后發出警告。 否則,使用不同的系統和插件將獲得不同的結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM