• 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

  • 相关阅读:
    第三天 python的初始编码,基本数据类型(int,str,bool),字符串的操作
    while循环,格式化输出,运算符,while...else...
    python的种类,变量,常量,基础数据类型,input,if条件语句
    JavaScript 之 web API
    传输层上的TCP和UDP
    应用层上的协议HTTP
    计算机网络通信
    grid布局
    使用classList和dataset实现tab切换
    JS之跨域
  • 原文地址:https://www.cnblogs.com/chenjianxiang/p/3932914.html
Copyright © 2020-2023  润新知