赞
踩
对接七牛C#SDk v7.2.15-ext-json
sdk下载路径: https://github.com/qiniu/csharp-sdk/releases ,使用压缩包里的net2.0 dll文件
具体代码参照下面
- using LitJson;
- using Qiniu.Common;
- using Qiniu.Http;
- using Qiniu.IO;
- using Qiniu.IO.Model;
- using Qiniu.JSON;
- using Qiniu.Util;
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
-
- public class AnotherJsonSerializer : IJsonSerializer {
- // 实现此接口的JSON序列化方法
- public string Serialize<T>(T obj) where T : new() {
- return JsonMapper.ToJson(obj);
- }
- }
-
- public class AnotherJsonDeserializer : IJsonDeserializer {
- // 实现此接口的JSON反序列化方法
- public bool Deserialize<T>(string str, out T obj) where T : new() {
- obj = default(T);
- bool ok = true;
- try {
- obj = JsonMapper.ToObject<T>(str);
- } catch (System.Exception) {
- ok = false;
- }
- return ok;
- }
- }
-
- public class QiniuMgr {
- public static QiniuMgr m_Instance;
-
- const string AK = "xxx";
- const string SK = "xxx";
- const string Bucket = "库名";
-
- public static QiniuMgr Instance {
- get {
- if (m_Instance == null) {
- m_Instance = new QiniuMgr();
- }
-
- return m_Instance;
- }
- }
-
- private QiniuMgr() {
- JsonHelper.JsonSerializer = new AnotherJsonSerializer();
- JsonHelper.JsonDeserializer = new AnotherJsonDeserializer();
-
- // 设置为华南区
- ZoneID zoneId = ZoneID.CN_South;
- Config.SetZone(zoneId, false);
- }
-
- /// <summary>
- /// 简单上传-上传字节数据
- /// </summary>
- public void UploadData(byte[] data, string fileName) {
- // 生成(上传)凭证时需要使用此Mac
- Mac mac = new Mac(AK, SK);
- // 上传策略,参见
- // https://developer.qiniu.com/kodo/manual/put-policy
- PutPolicy putPolicy = new PutPolicy();
- // 如果需要设置为"覆盖"上传(如果云端已有同名文件则覆盖),请使用 SCOPE = "BUCKET:KEY"
- putPolicy.Scope = Bucket + ":" + fileName;
- //putPolicy.Scope = Bucket;
- // 上传策略有效期(对应于生成的凭证的有效期)
- putPolicy.SetExpires(3600);
- // 上传到云端多少天后自动删除该文件,如果不设置(即保持默认默认)则不删除
- putPolicy.DeleteAfterDays = 1;
- // 生成上传凭证,参见
- // https://developer.qiniu.com/kodo/manual/upload-token
- string jstr = putPolicy.ToJsonString();
- string token = Auth.CreateUploadToken(mac, jstr);
-
- FormUploader fu = new FormUploader();
- HttpResult result = fu.UploadData(data, fileName, token);
- Debug.Log(result);
- }
- }

生成二维码的方法如下
- /// <summary>
- /// 用草料生成二维码
- /// </summary>
- /// <param name="content">扫码二维码后显示的内容</param>
- /// <returns></returns>
- IEnumerator SpawnQRCode(string content) {
- WWW www = new WWW(string.Format("https://cli.im/api/qrcode/code?text={0}&mhid=", content));
- yield return www;
-
- string errorMsg = string.Empty;
-
- if (string.IsNullOrEmpty(www.error)) {
- //Debug.Log(www.text);
- //获取二维码路径
- string s = www.text.Substring(www.text.IndexOf("<img src=") + 12, www.text.Length - (www.text.IndexOf("<img src=") + 12));
- string result = "http://" + s.Substring(0, s.IndexOf("\""));
-
- www = new WWW(result);
- yield return www;
-
- if (string.IsNullOrEmpty(www.error)) {
- m_ImgQRCode.gameObject.SetActive(true);
- m_ImgQRCode.texture = www.texture;
- } else {
- Debug.Log(www.error);
- }
-
- } else {
- Debug.Log(www.error);
- }
-
- }

其他主要代码
- // 截图
- Texture2D screenShot = CaptureScreen(m_Camera, new Rect(134, 109, 1646, 947));
- byte[] bytes = screenShot.EncodeToJPG();
-
- // 用时间戳生成文件名,防止cdn缓存
- string fileName = "GraphChart" + GetTimeStamp() + ".jpg";
-
- // 把图片上传到七牛存储
- QiniuMgr.Instance.UploadData(bytes, fileName);
-
- // 获取二维码 -WarterMaker 是七牛配置的图片下载处理模板,用来个图片加水印还是挺方便的,
- // 不过只要去掉-WarterMaker就会没水印了,不是很安全
- StartCoroutine(SpawnQRCode("//七牛配置的cdn域名.shenlinjoy.com/" + fileName + "-WarterMaker"));
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。