[英]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.