>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >nsILocalFile.create - поддержка юникода? http://forum.mozilla-russia.org/viewtopic.php?id=61952 |
Iczer > 17-02-2014 19:29:30 |
Необходимо сохранить загружаемый файл, для этого прежде всего создаю его: Выделить код Код:var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile); file.initWithPath(destinationfullpath); if( !file.exists() || !file.isFile() ) { file.create(Components.interfaces.nsIFile.NORMAL_FILE_TYPE, 0644) }; var fileURI = ioService.newFileURI(file); код работает нормально, если кодировка имени файла английская или совпадает с кодовой страницей ОС. В противном случае (имя файла в юникоде) подучаю ошибку: Выделить код Код:[Exception... "Component returned failure code: 0x80070057 (NS_ERROR_ILLEGAL_VALUE) [nsILocalFile.create]" nsresult: "0x80070057 (NS_ERROR_ILLEGAL_VALUE) Как обойти эту ошибку и таки создать файл? |
Infocatcher > 17-02-2014 21:38:00 |
Какой путь-то? Выделить код Код:var path = "D:\\æƠɫφՔẲ㋻㍼"; var file = Components.classes["@mozilla.org/file/local;1"] .createInstance(Components.interfaces.nsILocalFile); file.initWithPath(path); file.create(Components.interfaces.nsIFile.NORMAL_FILE_TYPE, 0644); Работает. |
Iczer > 17-02-2014 22:23:30 |
Сохраняю в темп |
Infocatcher > 17-02-2014 23:18:59 |
Такое у меня тоже работает, в том числе и в Firefox 10.0.11. |
Iczer > 18-02-2014 20:04:14 |
Хмм... А файл создаётся? Выделить код Код:try {' var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile); file.initWithPath(destinationfullpath); alert(destinationfullpath); file.create(Components.interfaces.nsIFile.NORMAL_FILE_TYPE, 0644); alert(destinationfullpath); }catch(e){alert(e);}' ------- |