filepicker exportБлокировщик файлов и всплывающих окон

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

filepicker.pick({extension: '.txt'},
    function(FPFile) {
        filepicker.read(FPFile, function(data) {
            // Open file
        });
    });

Нет проблем, независимо от того, активирована ли в браузере опция «блокировать всплывающие окна». Но когда я сохраняю файл через:

        filepicker.store(
        mycontent64,
        {base64decode: true, mimetype: 'text/plain'},
        function(InkBlob) {
            filepicker.exportFile(
                InkBlob,
                {suggestedFilename:"myfile.txt",extension: ".txt"},
            function(InkBlob) {
            // ******* Save file
            },
            function(FPError) {
                console.log(FPError.toString());
            });
            },
        function(FPError) {
                console.log(FPError.toString());
        }
    );

он работает только тогда, когда в браузере деактивирована опция «блокировать всплывающее окно» (Safari на iPad или стандартный браузер Android, или Google Chrome Android...). Если он активирован, браузер отказывается открывать диалоговое окно экспорта в новой вкладке, а с "FPError 131" в консоли...

Я не могу сказать своим пользователям отключить эту опцию!

Так есть ли обходной путь, который поможет?

Спасибо !


person Eric Hakenholz    schedule 28.08.2014    source источник


Ответы (1)


Некоторым обходным путем может быть открытое диалоговое окно выбора файлов внутри средства выбора файлов на той же странице. Для мобильных устройств измените параметры filepicker.exportFile:

filepicker.store(
    mycontent64,
    {base64decode: true, mimetype: 'text/plain'},
    function(InkBlob) {
        filepicker.exportFile(
            InkBlob,
            {
               suggestedFilename:"myfile.txt",
               extension: ".txt"
               container: "yourIframeId",
               mobile: true
            },
        function(InkBlob) {
        // ******* Save file
        },
        function(FPError) {
            console.log(FPError.toString());
        });
        },
    function(FPError) {
            console.log(FPError.toString());
    }
);

«yourIframeId» — это идентификатор тега iFrame на вашем сайте. 'mobile: true' активирует мобильную версию диалога. Проверьте документы: https://developers.filepicker.io/docs/web/#export

person krystiangw    schedule 10.09.2014