• 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

  • 相关阅读:
    [ZJOI2019]开关
    ABC245 Ex Product Modulo 2
    [SDOI2017]天才黑客
    ABC240G Teleporting Takahashi
    ABC240 Ex Sequence of Substrings
    ABC241H Card Deck Score
    mysql报错1055 only_full_group_by解决办法
    docker删除镜像Error response from daemon: conflict: unable to remove repository reference
    Docker服务启动报错:Job for docker.service failed because the control process exited with error
    bash: ifconfig: 未找到命令 解决方案
  • 原文地址:https://www.cnblogs.com/chenjianxiang/p/3932914.html
Copyright © 2020-2023  润新知