Что я делаю не так с API Chrome FileSystem? - PullRequest
0 голосов
/ 17 мая 2018

Попытка использовать API Chrome здесь (ничего особенного, просто хочу, по крайней мере, получить окно разрешений), и какой бы пример я ни нашел, мне кажется, что я сталкиваюсь с проблемами.

Например, это ссылка на github здесь .. Теперь все эти примеры в значительной степени настолько стары, что теперь язык другой.RequestFileSystem теперь относится только к Chrome с webkitRequestFileSystem, а FileError заменено на DOMError.Вот соответствующий javascript с заменой этих частей на их современные эквиваленты:

            window.webkitRequestFileSystem  = window.webkitRequestFileSystem || window.webkitRequestFileSystem;
        // Handle errors
        function errorHandler(e) {
            var msg = '';
            switch (e.code) {
                case DOMError.QUOTA_EXCEEDED_ERR:
                    msg = 'QUOTA_EXCEEDED_ERR';
                    break;
                case DOMError.NOT_FOUND_ERR:
                    msg = 'NOT_FOUND_ERR';
                    break;
                case DOMError.SECURITY_ERR:
                    msg = 'SECURITY_ERR';
                    break;
                case DOMError.INVALID_MODIFICATION_ERR:
                    msg = 'INVALID_MODIFICATION_ERR';
                    break;
                case DOMError.INVALID_STATE_ERR:
                    msg = 'INVALID_STATE_ERR';
                    break;
                default:
                    msg = 'Unknown Error';
                    break;
            };
            console.log('Error: ' + msg);
        }

        // Init and write some data to a file
        function onInitFs(fs) {
            fs.root.getFile('log-f-api.txt', {create: true}, function(fileEntry) {
                fileEntry.isFile === true;
                fileEntry.name == 'log-f-api.txt';
                fileEntry.fullPath == '/log-f-api.txt';
                // Create a FileWriter object for our FileEntry (log.txt).
                fileEntry.createWriter(function(fileWriter) {
                    fileWriter.onwriteend = function(e) {
                        console.log('Write completed.');
                    };
                    fileWriter.onerror = function(e) {
                        console.log('Write failed: ' + e);
                    };
                    // Create a new Blob and write it to log.txt.
                    if (!window.BlobBuilder && window.WebKitBlobBuilder)
                        window.BlobBuilder = window.WebKitBlobBuilder; // in Chrome 12.
                    var bb = new BlobBuilder(); 
                    bb.append("some stuff");
                    console.log("bb size:"+bb.size);
                    bb.append('put some nice text in our file....');
                    var ourData = bb.getBlob('text/plain');
                    fileWriter.write(ourData); 
                }, errorHandler);
            }, errorHandler);
        }
        // start the party
        $(function() {
            document.getElementById('hello').innerHTML = 'start the tests';
            window.webkitRequestFileSystem(window.PERSISTENT, 5*1024*1024, onInitFs,errorHandler);
        });

Я пробовал несколько разных примеров, и неважно, что я просто "Ошибка: Неизвестная ошибка" в консоли ...Я знаю, что Chrome не разрешит этот API более file://, поскольку использование Apache поверх localhost и размещение его на тестовом сервере дает одинаковый результат.Все, что я могу найти, говорит о том, что оно должно работать в Chrome 66, версии, которую я пытаюсь заставить работать.Что я тут не так делаю?

...