filepicker exportFile和popup blocker

时间:2014-08-28 10:05:59

标签: filepicker.io filepicker

我编写了一个webapp,它使用ink filepicker打开/保存文本文件到云端。在移动浏览器中,当我通过以下方式打开文件时:

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());
        }
    );

它只适用于"块弹出"选项在浏览器中停用(iPad或Android股票浏览器上的Safari,或Google Chrome Android ...)。 如果它被激活,浏览器拒绝在新选项卡中打开导出对话框,并使用" FPError 131"在控制台......

我无法告诉我的用户停用此选项!

那么有没有解决方法呢?

感谢' s!

1 个答案:

答案 0 :(得分:0)

一些解决方法是在同一页面的filepicker中打开filepicker对话框。 对于移动设备,请更改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标签的ID。 ' mobile:true'将强制移动响应版本的对话框。 检查文档:https://developers.filepicker.io/docs/web/#export