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