0

Мне нужно записать файл из моего хромового расширения. Я читал, что для этого я могу использовать API-интерфейс html5. Я скопировал простой фрагмент кода, который я нашел в Интернете, но он получает исключение FileError.NOT_FOUND_ERR.запись в файл из хромового расширения

chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) { 
    var gig=tab.url; 
    var server_url=""; 
    if(lst_frame.length > 0){ 
     console.log(JSON.stringify(lst_frame, null, 2)); 

window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem; 
function errorHandler(e) { 
    var msg = ''; 

    switch (e.code) { 
    case FileError.QUOTA_EXCEEDED_ERR: 
     msg = 'QUOTA_EXCEEDED_ERR'; 
     break; 
    case FileError.NOT_FOUND_ERR: 
     msg = 'NOT_FOUND_ERR'; 
     break; 
    case FileError.SECURITY_ERR: 
     msg = 'SECURITY_ERR'; 
     break; 
    case FileError.INVALID_MODIFICATION_ERR: 
     msg = 'INVALID_MODIFICATION_ERR'; 
     break; 
    case FileError.INVALID_STATE_ERR: 
     msg = 'INVALID_STATE_ERR'; 
     break; 
    default: 
     msg = 'Unknown Error'; 
     break; 
    }; 
    alert(msg); 
    console.log('Error: ' + msg); 
} 
function onInitFs(fs) { 
alert("1111"); 
    fs.root.getFile('/tmp/log.txt', {create: true, exclusive: true}, function(fileEntry) { 
    alert("222"); 
    // fileEntry.isFile === true 
    // fileEntry.name == 'log.txt' 
    // fileEntry.fullPath == '/log.txt' 

    }, errorHandler); 

} 

window.requestFileSystem(window.TEMPORARY, 1024*1024, onInitFs, errorHandler);} 
+0

http://stackoverflow.com/a/10517775/2698119 может помочь вам –

ответ

0

Неясно из вашего кода, если /tmp/log.txt абсолютный путь на вашей коробке Linux, или относительный путь от зоны хранения HTML5, поэтому я просто напомню, что HTML5 specification сказать, что:

Эта спецификация определяет API для навигации по иерархиям файловых систем и определяет средство, с помощью которого пользовательский агент может подвергать секциям с изолированной обработкой локальной файловой системы пользователя для веб-приложений.

Таким образом, вы не можете писать свой файл в любом месте на диске.

Что касается вашего вопроса, то вам просто необходимо создать каталог /temp первый:

function onInitFs(fs) 
{ 
    fs.root.getDirectory('/tmp', {create: true}, function() {}, errorHandler); 
    fs.root.getFile('/tmp/log.txt', {create: true}, function() {}, errorHandler); 
} 

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

  • Нет связанных вопросов^_^