uniapp 上传图片至阿里云OSS

本文出自:https://www.cnblogs.com/2186009311CFF/p/14248337.html

uniapp可参考页面插件 : https://ext.dcloud.net.cn/plugin?id=3814

//oss参数请求接口获得
            uploadImage: function(imageSrc_local, OssPara, userId) {
                return new Promise((resolve, reject) => {
                    
                    //当前时间精确到毫秒字符串
                    var date = new Date(); //获取时间
                    //console.log(date);
                    var year = date.getFullYear();
                    var month = date.getMonth() + 1;
                    var day = date.getDate();

                    var hour = date.getHours();
                    var minute = date.getMinutes();
                    var second = date.getSeconds();

                    month = isSubTen(month);
                    day = isSubTen(day);
                    //这样写显示时间在1~9会挤占空间;所以要在1~9的数字前补零;
                    if (hour < 10) {
                        hour = '0' + hour;
                    }
                    if (minute < 10) {
                        minute = '0' + minute;
                    }
                    if (second < 10) {
                        second = '0' + second;
                    }
                    //var x=date.getDay();//获取星期    
                    var time = year + month + day + hour + minute + second;



                    //图片命名规则:接口返回的地址 +接口返回的前缀 + 用户id +'_'+当前时间精确到毫秒字符串 +'.png';

                    let nameStr = OssPara.dir + userId + '_' + date + '.png';
                    console.log('nameStr' + nameStr) uni.uploadFile({
                        url: OssPara.host, //输入你的bucketname.endpoint  
                        filePath: imageSrc_local,
                        fileType: 'image',
                        name: 'file',
                        formData: {
                            name: nameStr,
                            key: nameStr,
                            policy: OssPara.policy, // 输入你获取的的policy 
                            OSSAccessKeyId: OssPara.accessKeyId, // 输入你的AccessKeyId 
                            success_action_status: '200', // 让服务端返回200,不然,默认会返回204 
                            signature: OssPara.signature, // 输入你获取的的signature  
                        },
                        success: res => {
                            //console.log(res) 
                            if (res.statusCode == '200') {
                                resolve(OssPara.host + '/' + nameStr);
                            } else {
                                console.log.log(res);
                                reject('接口返回错误');
                            }
                        },
                        fail() {
                            reject('网络链接错误');
                        }
                    });
                });
            },

 

posted @ 2021-01-07 19:57  wx_h13813744  阅读(1740)  评论(0编辑  收藏  举报