更新记录

1.0.0(2023-04-21)

初始版本


平台兼容性

Vue2 Vue3
×
App 快应用 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序
HBuilderX 3.1.0 app-vue × × ×
钉钉小程序 快手小程序 飞书小程序 京东小程序
× × × ×
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari
×

插件介绍

将又拍云上传图片功能进行封装,需要在服务器鉴权才能上传

插件配置及使用

配置属性

  • debug:开启调试模式,会toast又拍云错误码,缺省不开启
  • items:图片数组,适用于初始化,更适用于列表展示,缺省空数组
  • column:展示缩略图列数,缺省4列
  • space:整体左右间距,图片之间间距取值1/2,缺省16px
  • sizeType:original原图,compressed压缩图,缺省二者都有["compressed","original"]
  • sourceType:相机或相册选项,缺省二者都有["album","camera"]
  • maxCount:最多显示或上传图片数,缺省9
  • mutiple:是否开启多选,缺省开启
  • showUpload:是否显示上传按钮,缺省显示
  • canDelete:是否可删除图片,缺省可以
  • signUrl:服务器鉴权地址 必填
  • bucket:又拍云BucketName 必填
  • folderMode:又拍云文件夹创建类型,分4种,为:-1=不创建 0=月份 1=日期 2=文件名前十位(文件名为uuid) 缺省0,月份
  • operator:又拍云操作员账号 必填
  • uri:图片显示前缀,一般为域名(带http://或https://,并以/结束) 必填
  • suffix:又拍云图片处理版本后缀,如_x200

可用函数

  • data():参数图片数组,类型为 Array[String],图片显示动态赋值或初始化
  • urls():获取已经选取上传的图片路径,该路径为去除 属性 uri和suffx 的值,返回数组 Array[String]
  • empty():用于判断当前是否未选取任何图片
  • complete():用于校验所选图片是否全部已上传完成

服务器鉴权示例

golang

// data 为又拍云提交鉴权自动拼接
signStr := util.UpyunSign("{data参数}", "{操作员密码}")
return map[string]interface{}{"signature": signStr}

func UpyunSign(data, password string) string {
    mac := hmac.New(sha1.New, []byte(md5Str(password)))
    mac.Write([]byte(data))
    signStr := base64.StdEncoding.EncodeToString(mac.Sum(nil))
    return signStr
}
func md5Str(s string) string {
    return fmt.Sprintf("%x", md5.Sum([]byte(s)))
}

java

// data 为又拍云提交鉴权自动拼接
try {
  String signStr = sign("{data参数}", "{操作员密码}");
  return new JsonObject().put("signature", signStr);
} catch (Exception e) {
}

public static String sign(String data, String passWord) throws NoSuchAlgorithmException, SignatureException, InvalidKeyException {
    byte[] hmac = hashHmac(data, md5(passWord));
    return Base64.getEncoder().encodeToString(hmac);
}

public static byte[] hashHmac(String data, String key)
            throws SignatureException, NoSuchAlgorithmException, InvalidKeyException {
    SecretKeySpec signingKey = new SecretKeySpec(key.getBytes(), HMAC_SHA1_ALGORITHM);
    Mac mac = Mac.getInstance(HMAC_SHA1_ALGORITHM);
    mac.init(signingKey);
    return mac.doFinal(data.getBytes());
}

public static String md5(String string) {
    byte[] hash;
    try {
        hash = MessageDigest.getInstance("MD5").digest(string.getBytes(StandardCharsets.UTF_8));
    } catch (NoSuchAlgorithmException e) {
        throw new RuntimeException("MessageDigest不支持MD5Util", e);
    }
    StringBuilder hex = new StringBuilder(hash.length * 2);
    for (byte b : hash) {
        if ((b & 0xFF) < 0x10) hex.append("0");
        hex.append(Integer.toHexString(b & 0xFF));
    }
    return hex.toString();
}

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

暂无用户评论。

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问