接口查询的数据生成excel上传到七牛云

接口查询的数据生成excel上传到七牛云

一、注册七牛云并新建一个存储空间
我们公司已经有一个七牛云的账号,登录进去之后创建一个新的对象存储空间。命名为eval_mobile。酒会有一个默认的融合 CDN 测试域名,我的是(ptqj41ry2.xxx.clouddn.com)。如果需要一个加速域名可以声请,除此以外几乎不再用做什么就可以有一个简单存储空间了。
二、在配置文件中添加七牛云的配置信息

qiniu.qiniuDomain = http://ptqj41ry2.xxxx.clouddn.com  这是第一步创建存储空间的域名(加上上传的文件名,就是下载文件的链接了)
qiniu.protocol = http://
qiniu.bucket = eval_mobile   这是存储空间的名称

三、接口准备上传的内容

List list = comprehensiveReportService.downloadKeyOfRaw(schoolCode,parentExamId,subjectType,startRank,
                endRank,startScore,endScore,classStr);

list即为需要生成excel文件的内容

四、生成要上传的文件类型(这里上传excel文件)

  1. 文件名的生成我是用请求的参数的hashCode累加起来作为参数的。这样同样的参数请求的数据其实都是一样的。所以没必要上传同样内容的文件到七牛云上。同参数生成的同名文件只会上传一次。但是在做的过程中发现文件上传上去,下载下来打不开。有些又能打开。这个问题我测了好久。后面发现能打开的文件的文件名都是3位数字以上的文件,打不开的正式2位数字组成的文件名。然后我将生成文件名的数字都乘以10,所有的文件名于是 都在三位数以上,于是上传的所有文件都能打开。这个问题是解决了,但是它的原理是什么并不知道。若有大神路过请指教。

  2. 将数据放到excel中并上传
    接口查询的数据生成excel上传到七牛云_第1张图片
    2.1 excel的制作过程就不必细说。下面是uploadData()方法的详细代码

    public String uploadData(byte[] data, String key) {
        //String url;
        try {
            Configuration cfg = new Configuration(Zone.zone0());
            UploadManager uploadManager = new UploadManager(cfg);
            //调用put方法上传
            Response res = uploadManager.put(data, key, genUploadToken());
            if (StringUtils.isBlank(key)){
                QiniuReturn qiniuReturn = JSON.parseObject(res.bodyString(), QiniuReturn.class);
                key = qiniuReturn.getKey();
            }
            //打印返回的信息
            System.out.println("打印返回的信息:"+res.bodyString());
        } catch (QiniuException e) {
            if (e.response.statusCode==614){
                return getDomain() + "/" + key;
            }
            return "";
        }
        String domain = getDomain();
        return getDomain() + "/" + key;
    }

接口查询的数据生成excel上传到七牛云_第2张图片
2.2 下面来看看如果获取上传token的 genUploadToken()

    /**
     * 生成上传token
     * @return
     */
    String genUploadToken() {
        String bucket = getBucket();
        Auth auth = Auth.create(Constants.QINIU_AK, Constants.QINIU_SK);
        return auth.uploadToken(bucket);
    }

接口查询的数据生成excel上传到七牛云_第3张图片
String bucket = getBucket();获取存储空间的名称eval_mobile,也是前面写在配置文件中的,如何读取配置文件,如何读取配置文件這里不用赘述。生成上传token:

Auth auth = Auth.create(Constants.QINIU_AK, Constants.QINIU_SK);

Constants里面的具体内容如下:
接口查询的数据生成excel上传到七牛云_第4张图片
QINIU_AK、QINIU_SK的值是七牛云账户的密钥。登录七牛云打开个人中心,点击密钥管理
接口查询的数据生成excel上传到七牛云_第5张图片
整个上传就结束了。

你可能感兴趣的:(Java基础)