使用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中包装成功回调,但这看起来很混乱,如果文件实际可用,我不想让用户等待。
答案 0 :(得分:1)
我和你有同样的问题。我的解决方法是将onError事件附加到图像并让它在404上重试(可以设置重试次数以避免无限循环),但它非常难看和混乱,所以如果有人带来更好的话会很棒溶液
答案 1 :(得分: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;
}
);