m***@sina.com
m***@sina.com
  • 发布:2018-04-26 18:02
  • 更新:2018-04-27 16:50
  • 阅读:3689

plus.gallery.save 保存多张图片报错[Gallery:-3301]写入正忙请问如何解决?

分类:5+ SDK
mui.plusReady(function() {  
    //shareImgs为图片路径序列,逗号分开  
    var shareImgs = plus.webview.currentWebview().shareImgs;  
    var arrCopyImg = shareImgs.split(",");  
    for(var i = 0; i < arrCopyImg.length; i++) {  
        if(arrCopyImg[i] != "") {  
            downloadFile(arrCopyImg[i]);  
        }  
    }  
});  

// 下载  
function downloadFile(imgUrl) {  
    var downLoader = plus.downloader.createDownload(imgUrl, {}, function(download, status) {  
        if(status == 200) {  
            plus.gallery.save(download.filename, function() {  
                console.log("success:" + imgUrl);  
            }, function(e) {  
                console.log("error:" + imgUrl + JSON.stringify(e));  //部分保存成功,部分报写入正忙  
            });  
        }  
    });  
    downLoader.start();  
}

有部分数据保存成功:

HBuilder版本:9.0.2.201803061935

请问如何解决?

2018-04-26 18:02 负责人:无 分享
已邀请:

最佳回复

m***@sina.com

m***@sina.com (作者) - 不忘初心

封装成了一个方法,方便其他地方用:

// stringImg为图片路径序列  
function downloadFile(stringImg) {  
    var arrImg = stringImg.split(",");  
    var index = 0;  
    var total = arrImg.length;  
    var down = function() {  
        var imgUrl = arrImg[index];  
        console.log(imgUrl)  
        var downLoader = plus.downloader.createDownload(imgUrl, {}, function(download, status) {  
            if(status == 200) {  
                plus.gallery.save(download.filename, function() {  
                    console.log("success:" + imgUrl);  
                    index += 1;  
                    if(index !== total) {  
                        down();  
                    }  
                }, function(e) {  
                    console.log("error:" + imgUrl + JSON.stringify(e));  
                });  
            }  
        });  
        downLoader.start();  
    };  
    down();  
}

问题解决,非常感谢!!

Trust

Trust - 少说废话

按照这个 如何正确的在社区提问 里面的引导,补全下描述,并上传下 demo。

JS 部分优化了一下,可以按照这样测试下,是否还会有告警。

mui.plusReady(function () {  
  var arrCopyImg = [  
    "http://ozt4cig28.bkt.clouddn.com/op/share/ATT0000237685.jpg",  
    "http://ozt4cig28.bkt.clouddn.com/op/share/ATT0000237686.jpg",  
    "http://ozt4cig28.bkt.clouddn.com/op/share/ATT0000237679.jpg",  
    "http://ozt4cig28.bkt.clouddn.com/op/share/ATT0000237680.jpg",  
    "http://ozt4cig28.bkt.clouddn.com/op/share/ATT0000237684.jpg",  
    "http://ozt4cig28.bkt.clouddn.com/op/share/ATT0000237682.jpg",  
    "http://ozt4cig28.bkt.clouddn.com/op/share/ATT0000237683.jpg",  
    "http://ozt4cig28.bkt.clouddn.com/op/share/ATT0000237688.jpg",  
    "http://ozt4cig28.bkt.clouddn.com/op/share/ATT0000237687.jpg"  
  ];  
  var index = 0;  
  var total = arrCopyImg.length;  
  var down = function () {  
    var imgUrl = arrCopyImg[index];  
    var downLoader = plus.downloader.createDownload(imgUrl, {}, function (download, status) {  
      if (status == 200) {  
        plus.gallery.save(download.filename, function () {  
          console.log("success:" + imgUrl);  
          index += 1;  
          if (index !== total) {  
            down();  
          }  
        }, function (e) {  
          console.log("error:" + imgUrl + JSON.stringify(e));  
        });  
      }  
    });  
    downLoader.start();  
  };  
  document.getElementById("btnSubmit").addEventListener("tap", down);  
});
  • m***@sina.com (作者)

    补充了

    2018-04-26 18:26

  • Trust

    回复 m***@sina.com:上传个 demo,老哥~

    2018-04-26 18:29

  • m***@sina.com (作者)

    回复 Trust:补充了DEMO

    2018-04-26 18:44

  • m***@sina.com (作者)

    回复 Trust:demo能用吗

    2018-04-26 18:56

  • Trust

    回复 m***@sina.com:这里没有报那个告警信息,你的HBuilder版本和设备信息,在问题上面补充下。

    2018-04-26 19:17

  • m***@sina.com (作者)

    回复 Trust: 我测试一下,这种只能看单线程,递归方式处理。。。

    2018-04-26 19:33

  • m***@sina.com (作者)

    回复 Trust:回复 Trust: 最下面还需要调用一下down(),就可以了

    2018-04-26 19:57

首席劝退师

首席劝退师

为什么现在HBuilder打包这么慢

该问题目前已经被锁定, 无法添加新回复