4

使用 filepicker.io 上传文件时,会在文件实际可用之前调用 filepicker.pick 成功回调。这是代码:

        filepicker.pick({
            mimetypes: ['image/*'],
            container: 'modal',
            services:['COMPUTER', 'FACEBOOK', 'INSTAGRAM', 'WEBCAM']
        },
        function(inkBlob){
            $('img.foo').attr('src', inkBlob.url);
        },
        function(FPError){
            console.log(FPError.toString());
        });

我在回调中的 inkBlob 中得到一个 url,但有时如果我将该 url 插入 dom(如上),我会得到 404。其他时候它可以工作。我正在寻找一种可靠的方法来了解何时可以使用 filepicker 返回的文件。我认为成功回调就是它,但似乎存在这种竞争条件。

我意识到我可以将成功回调包装在 setTimeout 中,但这看起来很混乱,如果文件实际可用,我不想让用户等待。

4

2 回答 2

1

我和你有同样的问题。我的解决方法是将 onError 事件附加到图像并让它在 404 上重试(可以设置重试限制以避免无限循环),但它非常丑陋和混乱,所以如果有人能提供更好的解决方案。

于 2013-08-09T16:21:51.300 回答
1

您还可以使用事件侦听器。

我有一个 ajax 调用,它在被 Ink 裁剪后下载图像。这个电话偶尔会失败。我通过大致执行以下操作来修复它:

filepicker.convert(myBlob, 
    { 
        crop: cropDimensions
    },
    function(croppedBlob) {

        function downloadImage() { 
            ...
        }

        var imageObj = new Image();
        imageObj.onLoad(downloadImage()); //only download when image is there
        imageObj.src = croppedBlob.url;
    }
);
于 2013-09-18T16:57:06.857 回答