更新记录
1.0.0(2023-04-21)
下载此版本
初始版本
平台兼容性
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();
}