zoukankan      html  css  js  c++  java
  • Android使用7牛云存储

    第一次使用这个云存储,话说7牛云存储大有来头!区别于国内外其他云存储,七牛自行研发的全分布式架构解决了其他云存储单一数据中心架构可能存在的风险,同时首创双向加速特性对数据上传下载均加速,使得数据访问速度较传统方案平均提升 50%以上。此外,镜像存储客户端直传断点续上传云端富媒体处理等七牛云存储独有的功能也大大提升了开发效率,最大程度减少了服务器资源浪费。

    7牛云存储需要3个信息就可以上传图片了。

    1,AK(AccessKey)

    2,SK(SecretKey)

    3,bucketName(应该就是二级域名)

    进入账号设置-密钥可以找到如下信息:

    JAVA服务器代码:

    Config.ACCESS_KEY = "***************************************";
    Config.SECRET_KEY = "***************************************";
    Mac mac = new Mac(Config.ACCESS_KEY, Config.SECRET_KEY);
    // 请确保该bucket已经存在
    String bucketName = "iamchen";
    PutPolicy putPolicy = new PutPolicy(bucketName);
    String uptoken = putPolicy.token(mac);
    PutExtra extra = new PutExtra();
    String key = UUID.randomUUID().toString();
    String localFile = tempfile.getAbsolutePath();
    PutRet ret = IoApi.putFile(uptoken, key, localFile, extra);
    return ret.getKey();//ret.getHash();

    Android上传文件代码(先从web服务器得到token):

    //若已经上传则文件名显示为:7d0fb768-cace-44c2-9704-29e170c447c9
    //未上传为:/storage/sdcard0/RZproject/3e94c815-f2fb-48cc-9d1c-51be2ae245cf.jpg
    if (!ViewUtil.isStrEmpty(listFile[i])) {// 如果有文件
        if (ViewUtil.isuploadedphoto(listFile[i])) {// 如果已上传,则没有特殊符号
            listSuccessName[i] = listFile[i];
        } else {
            listSuccessName[i] = null;
            imageCountToUpload++;
            extra.params = new HashMap<String, String>();
            extra.params.put("x:index", String.valueOf(i));
            extra.params.put("x:fileName", listFile[i]);
            //UploadImageAsyncTask
            //putFile(String uptoken, String key, File file, PutExtra extra, JSONObjectRet callback)    
            Log.i(TAG, "begin--->IO.putFile");
            File file = new File(listFile[i]);
            IO.putFile(OrderData.getTempToken(), key, file, extra, myJSONObjectRet);
        }
    }
    myJSONObjectRet是一个回调对象,处理云服务器返回来的结果(服务器保存图片后会返回一段json数据。json数据中有两个数据。一个是key,还有一个是hash)
    JSONObjectRet myJSONObjectRet = new JSONObjectRet(){
    
        @Override
        public void onSuccess(JSONObject obj) {    
    
            String index = obj.optString("x:index", "");
            String name = obj.optString("x:fileName", "");
            String key = obj.optString("key", "");
            Log.i(TAG, "位置:" + index + ",文件名:" + name +",key:"+key);
            listSuccessName[Integer.valueOf(index)] = key;
            loadedimageCountUp++;
            if (loadedimageCountUp >= imageCountToUpload) {
                setClothesDetail();
            }
            Log.i(TAG, "end--->IO.putFile");
        }
    
        @Override
        public void onFailure(QiniuException ex) {
            hideProgressDialog();
        }
    
    };

    注意在使用之前应该导入相关的包。

    下载地址:https://github.com/qiniu/android-sdk

  • 相关阅读:
    lufylegendRPG游戏引擎 Yorhom's Game Box
    讨论交流 Yorhom's Game Box
    货币之间的大小写转换
    Unreal3的D3D渲染器部分
    Linxu宿主目录
    用于主题检测的临时日志(b25e234297d442ccba394dd2241308d2 3bfe001a32de4114a6b44005b770f6d7)
    Linux命令 文件命名规则 基础
    C#_GDI_文章粗略整合
    由IDisposable接口导致的using使用 以及using的其他用法
    ADO.NET基础备忘1_SqlConnection SqlCommand SqlDataReader
  • 原文地址:https://www.cnblogs.com/chenjianxiang/p/3932914.html
Copyright © 2011-2022 走看看