2013-07-30 2 views
0

У меня есть приложение, написанное на javascript, которое позволяет пользователю сохранять изображение на свой диск. Это связано с node.js. Если я попрошу перезаписать ранее сохраненное изображение, я получаю смешанные результаты, когда дело доходит до получения предупреждения от ОС, что я собираюсь перезаписать файл. Если я попытаюсь перезаписать изображение, выбрав старое изображение из диалогового окна сохранения файла, оно вызывает предупреждение. Если я переписываю образ простым вводом в одно и то же имя файла, он перезаписывает изображение, но не дает никаких предупреждений.Перезаписать предупреждение о файле при сохранении изображения с помощью 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 Dialog OnChange событие:

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

Как вы можете видеть Filetype в настоящее время добавляется до вызова в ОС, чтобы сохранить файл, так что я не могу понять, почему он соответствует имена файлов только тогда, когда это автоматически вводится, выбирая файл.

Такое поведение согласуется с окнами 7 и 8, а также с mac os 10.7.

ответ

0

Проблема не в имени, это файл, который я считаю. Кодировки различаются между html2canvas и обычной загрузкой файлов. Я думаю, что ОС обнаруживает пересмотр файла в одном случае и совершенно другой файл в другом случае.

Лучшее предложение - сделать обнаружение самостоятельно, что является правильным способом. Проверьте, существует ли файл, а затем выплюнуть предупреждение. В противном случае вы получите разные результаты с помощью разных систем и плагинов.

+0

Я, хотя об этом и беспокоился, что это приведет к появлению иногда одного предупреждения, а иногда и получению двух, одного от меня и одного от ОС. Вы знаете, могу ли я подавить ОС? –

Смежные вопросы