帖子
帖子
用户
博客
课程
123下一页
返回列表 发新帖
显示全部楼层
32
帖子
0
勋章
257
Y币

分享UIMediaScanner、imageFilter.compress和uploadFile完成的多图批量...

  [复制链接]
发表于 2015-11-5 11:50:19
其实思路非常简单:用UIMediaScanner选择多图---->前端展示---->调**.**press压缩---->uploadFile上传---->回调id放到业务表中。
耗费了我很大精力的地方是在循环多图,压缩上传时,由于压缩是异步函数,传的参数上传时都变成循环最后一个值了。考虑过压缩成功后组成数组,再循环上传,实践部可行。
现在终于是实现了,也不知道算不算递归,就是在上传的回调函数里调用回调函数。
分享出来也希望帮到跟我有一样困惑的朋友,或者是你有更好的方法,大家交流下。
下面直接上代码。
var album = api.require('UIMediaScanner');
                        album.open({
                                column : 4,
                                sort : {
                                        key : 'time',
                                        order : 'desc'
                                },
                                texts : {
                                        stateText : '*',
                                        cancelText : '取消',
                                        finishText : '完成'
                                },
                                styles : {
                                        bg : '#fff',
                                }
                        }, function(ret) {
                                if (ret) {
                                            list = ret.list;
                                            uploadImage(list.length);
                                }
                        });


function uploadImage(length) {
        //压缩图片
        if ( length == 0) {
                return;
        }
        var item = list[length-1];
        var imgPath = item.path;
        var img_Name = new Date().getTime() + "_" + length;
        var imageCachePath = api.cacheDir;
        var imageFilter = api.require("imageFilter");
**.**press({
                img : imgPath,
                quality : 0.5,
                scale : 0.5,
                save : {
                        album : true,
                        imgPath : imageCachePath,
                        imgName : img_Name + '.jpg'
                }
        }, function(reta, err) {
                if (reta.status) {
                        var compressedImgPath = imageCachePath + '/' + img_Name + '.jpg';
                        //上传图片
                        var model = api.require('model');
                        model.config({
                                appId : 'A657',
                                appKey : 'F0A794'
                        });
                        model.uploadFile({
                                report : true,
                                data : {
                                        file : {
                                                name : img_Name,
                                                url : compressedImgPath
                                        },
                                }
                        }, function(retb, err) {
                                if (retb) {
                                        var state = retb.state;
                                        if (state == 1) {
                                                var body = retb.body;
                                                if (body) {
                                                        $api.text($api.byId('' + imgPath + ''), '上传完成');
                                                        $api.attr($api.byId('' + imgPath + ''), 'data-id', '' + body.id + '');
                                                }
                                                uploadImage(length-1);
                                        }
                                } else {
                                        alert(JSON.stringify(err));
                                }
                        });
                }
        });
}

33
帖子
0
勋章
417
Y币
对于使用云数据库的人来说   很实用
32
帖子
0
勋章
257
Y币

谢谢支持,向大神学习
32
帖子
0
勋章
257
Y币
早起是病 发表于 2015-11-5 15:20
对于使用云数据库的人来说   很实用

恩  我觉得云数据库挺方便的
新人,学习中
1
帖子
0
勋章
841
Y币
mark 一下
36
帖子
0
勋章
279
Y币
学习,学习
7
帖子
1
勋章
2409
Y币
感谢楼主,收藏,马上用下代码试试
7
帖子
1
勋章
2409
Y币
非常好用,再次感谢分享
32
帖子
0
勋章
257
Y币
llsenyue 发表于 2015-11-12 11:27
非常好用,再次感谢分享

有帮助就好,这块折腾了不少精力
123下一页
您需要登录后才可以回帖 登录

本版积分规则