更新记录
1.0.0(2023-04-21) 下载此版本
初始版本
平台兼容性
uni-app
Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
---|---|---|---|---|---|---|---|---|
√ | - | √ | √ | √ | - | - | - | - |
微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 快应用-华为 | 快应用-联盟 |
---|---|---|---|---|---|---|---|---|---|---|
√ | √ | - | - | - | - | - | √ | - | - | - |
其他
多语言 | 暗黑模式 | 宽屏模式 |
---|---|---|
× | × | √ |
插件介绍
将又拍云上传图片功能进行封装,需要在服务器鉴权才能上传
插件配置及使用
配置属性
debug:开启调试模式,会toast又拍云错误码,缺省不开启 items:图片数组,适用于初始化,更适用于列表展示,缺省空数组 column:展示缩略图列数,缺省4列 space:整体左右间距,图片之间间距取值1/2,缺省16px sizeType:original原图,compressed压缩图,缺省二者都有["compressed","original"] sourceType:相机或相册选项,缺省二者都有["album","camera"] maxCount:最多显示或上传图片数,缺省9 mutiple:是否开启多选,缺省开启 :是否显示上传按钮,缺省显示 :是否可删除图片,缺省可以 :服务器鉴权地址 必填 bucket:又拍云 必填 :又拍云文件夹创建类型,分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();
}