阿里云服务SDK

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

此处为阿里云各组件的SDK示例


提示:以下是本篇文章正文内容,下面案例可供参考

一、OSS文件操作

网站 : https://help.aliyun.com/document_detail/84781.html?spm=a2c4g.11186623.6.940.7d7367celJzmZ0

<dependency>
    <groupId>com.aliyun.oss</groupId>
    <artifactId>aliyun-sdk-oss</artifactId>
    <version>3.10.2</version>
</dependency>

文件上传

通过参数为MultipartFile的类 以流的形式进行上传 示例 serviceImpl

public String upload(InputStream inputStream, String module, String oFilename) {
        String bucketName = ossProperties.getBucketName();
        String endpoint = ossProperties.getEndpoint();
        String keyId = ossProperties.getKeyId();
        String keySecret = ossProperties.getKeySecret();


        //判断oss实例是否存在:如果不存在则创建,如果存在则获取
        OSS ossClient = new OSSClientBuilder().build(endpoint, keyId, keySecret);
        if (!ossClient.doesBucketExist(bucketName)) {
            //创建bucket
            ossClient.createBucket(bucketName);
            //设置oss实例的访问权限:公共读
            ossClient.setBucketAcl(bucketName, CannedAccessControlList.PublicRead);
        }

        //构建日期路径:avatar/2019/02/26/文件名
        String folder = new DateTime().toString("yyyy/MM/dd");

        //文件名:uuid.扩展名
        String fileName = UUID.randomUUID().toString();
        String fileExtension = oFilename.substring(oFilename.lastIndexOf("."));
        String key = module + "/" + folder + "/" + fileName + fileExtension;

        //文件上传至阿里云
        ossClient.putObject(ossProperties.getBucketName(), key, inputStream);

        // 关闭OSSClient。
        ossClient.shutdown();

        //返回url地址
        return "https://" + bucketName + "." + endpoint + "/" + key;
    }

文件上传删除

public void delete(String url) {
        String endpoint = ossProperties.getEndpoint();
        String keyid = ossProperties.getKeyId();
        String keysecret = ossProperties.getKeySecret();
        String bucketname = ossProperties.getBucketName();

        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, keyid, keysecret);

        String host = "https://" + bucketname + "." + endpoint + "/";
        String objectName = url.substring(host.length());

        // 删除文件。
        ossClient.deleteObject(bucketname, objectName);
        System.out.println("到此一游");
        // 关闭OSSClient。
        ossClient.shutdown();
    }

二、EasyExcel

public List<Person> getList() {
    //遍历每一个Person   每一对象写入一行
        List<Person> list = new ArrayList<Person>();
        for (int i = 0; i < 10; i++) {
            Person person = new Person();
            person.setAge(i);
            person.setId(i);
            person.setName("hello" + i);
            person.setSalary(12345.53);
            list.add(person);
        }
        return list;
    }
public void simpleWrite() {
        // 写法1   指定文件名
        String fileName = "D:/练习/test/demo1" + ".xlsx";
        // 这里 需要指定写用哪个class去写,然后写到第一个sheet,名字为模板 然后文件流会自动关闭
        // 如果这里想使用03 则 传入excelType参数即可
        EasyExcel.write(fileName, Person.class).sheet("模板").doWrite(getList());

    }
public void simpleRead07(){
        String fileName = "D:/练习/test/demo1"+ ".xlsx";
        // 这里 需要指定读用哪个class去读,然后读取第一个sheet 文件流会自动关闭
        EasyExcel.read(fileName, Person.class, new DemoDataListener()).sheet().doRead();
    }

三、VOD视频点播功能

视频上传功能

public R upload(@RequestParam MultipartFile file){
        try {
            String originalFilename = file.getOriginalFilename();
            InputStream inputStream = file.getInputStream();
            String vodId = vodService.uploadVod(originalFilename,inputStream);
            return R.ok().data("vodId",vodId);
        } catch (IOException e) {
            throw new GuliException(ResultCodeEnum.FETCH_PLAYAUTH_ERROR);
        }
    }
}
public String uploadVod(String originalFilename, InputStream inputStream) {
        String keyId = vodProperty.getKeyId();
        String keySecret = vodProperty.getKeySecret();
    	//截取文件名
        String title = originalFilename.substring(0, originalFilename.lastIndexOf("."));
        UploadStreamRequest request = new UploadStreamRequest(keyId, keySecret, title, originalFilename, inputStream);

        /* 封面图片(可选) */
        request.setCoverURL("https://2020my-guli-file.oss-cn-shanghai.aliyuncs.com/avatar/15.jpg");

        /* 点播服务接入点 */
        request.setApiRegionId("cn-shanghai");
        /* ECS部署区域*/
        request.setEcsRegionId("cn-shanghai");

        UploadVideoImpl uploader = new UploadVideoImpl();
        UploadStreamResponse response = uploader.uploadStream(request);
        System.out.print("RequestId=" + response.getRequestId() + "\n");  //请求视频点播服务的请求ID
        if (response.isSuccess()) {
            System.out.print("VideoId=" + response.getVideoId() + "\n");
        } else { //如果设置回调URL无效,不影响视频上传,可以返回VideoId同时会返回错误码。其他情况上传失败时,VideoId为空,此时需要根据返回错误码分析具体错误原因
            System.out.print("VideoId=" + response.getVideoId() + "\n");
            System.out.print("ErrorCode=" + response.getCode() + "\n");
            System.out.print("ErrorMessage=" + response.getMessage() + "\n");
        }
        if (!StringUtils.isEmpty(response.getVideoId())){
            throw new GuliException(ResultCodeEnum.VIDEO_UPLOAD_ALIYUN_ERROR);
        }

        return response.getVideoId();
    }

获取播放地址,客户端进行播放

public R getPath(@PathVariable String id){
        String pathUrl = vodService.getPath(id);
        return R.ok().data("pathUrl",pathUrl);
}
public String getPath(String id) {
        String regionId = "cn-shanghai";  // 点播服务接入区域
        DefaultProfile profile = DefaultProfile.getProfile(regionId, vodProperty.getKeyId(), vodProperty.getKeySecret());
        DefaultAcsClient client = new DefaultAcsClient(profile);

        GetVideoPlayAuthResponse response = new GetVideoPlayAuthResponse();
        try {
            GetPlayInfoRequest request = new GetPlayInfoRequest();
            request.setVideoId("f4c778cf38b749109d6980848650df6a");
            client.getAcsResponse(request);
            //播放凭证
            System.out.print("PlayAuth = " + response.getPlayAuth() + "\n");
            //VideoMeta信息
            System.out.print("VideoMeta.Title = " + response.getVideoMeta().getTitle() + "\n");
        } catch (Exception e) {
            System.out.print("ErrorMessage = " + e.getLocalizedMessage());
        }
        System.out.print("RequestId = " + response.getRequestId() + "\n");
        return response.getPlayAuth();
    }   

四、短信服务

获取短信 获取成功则需要存入redis, 后期便于校验

//获取短信   获取成功则需要存入redis, 后期便于校验.
public R getCode(@PathVariable String mobile) throws ClientException {

        //校验手机号是否合法
        if(StringUtils.isEmpty(mobile) || !FormUtils.isMobile(mobile)){
            return R.setResult(ResultCodeEnum.LOGIN_PHONE_ERROR);
        }

        //生成4位验证码
        String checkCode = RandomUtils.getFourBitRandom();
        //发送验证码
        smsService.send(mobile, checkCode);
        //将验证码存入redis缓存
        String key = "checkCode::" + mobile;
        redisTemplate.opsForValue().set(key, checkCode, 5, TimeUnit.MINUTES);

        return R.ok().message("短信发送成功");
    }
public void send(String mobile, String fourBitRandom) {
   		//获取阿里云短信服务的用户信息,调用前需要获取功能的授权
        String keyId = smsProperties.getKeyId();
        String keySecret = smsProperties.getKeySecret();
        String regionId = smsProperties.getRegionId();
        String signName = smsProperties.getSignName();
        String templateCode = smsProperties.getTemplateCode();
        //组装请求参数
        DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", keyId, keySecret);
        IAcsClient client = new DefaultAcsClient(profile);
        CommonRequest request = new CommonRequest();
        request.setSysMethod(MethodType.POST);
    	//部分参数为固定, 不需要修改
        request.setSysDomain("dysmsapi.aliyuncs.com");
        request.setSysVersion("2017-05-25");
        request.setSysAction("SendSms");
        request.putQueryParameter("RegionId", regionId);
        request.putQueryParameter("PhoneNumbers", mobile);
        request.putQueryParameter("SignName", signName);
        request.putQueryParameter("TemplateCode", templateCode);
        try {
            HashMap<String, Object> map = new HashMap<>();
            map.put("code",fourBitRandom);
            Gson gson = new Gson();
            //以k : v 的形式 存入生成的随机数
            request.putQueryParameter("TemplateParam",gson.toJson(map));

            CommonResponse response = client.getCommonResponse(request);
            String data = response.getData();
            HashMap<String,String> hashMap = gson.fromJson(data, HashMap.class);
            //解析json字符串格式的响应结果
            /**获取的data 格式如下
             * {
             * 	"Message": "模板不合法(不存在或被拉黑)",
             * 	"RequestId": "3D5DB61D-6FF4-4907-B94E-E16D248C02BE",
             * 	"Code": "isv.SMS_TEMPLATE_ILLEGAL"
             * }
             */
            String code = hashMap.get("Code");
            String message = hashMap.get("Message");
            //解析响应的message, 如果为异常信息,则验证码获取失败,且抛出异常
            // 抛出异常时, 可以不用写return
            if ("isv.BUSINESS_LIMIT_CONTROL".equals(code)) {
                log.error("短信发送过于频繁 " + "【code】" + code + ", 【message】" + message);
                throw new GuliException(ResultCodeEnum.SMS_SEND_ERROR_BUSINESS_LIMIT_CONTROL);
            }

            if (!"OK".equals(code)) {
                log.error("短信发送失败 " + " - code: " + code + ", message: " + message);
                throw new GuliException(ResultCodeEnum.SMS_SEND_ERROR);
            }

            System.out.println(response.getData());
        } catch (Exception e) {
            e.printStackTrace();
            threw new GuliException(ResultCodeEnum.xxxxxx);
        }
    }

五、总结

此处为示例,后期cv修改方便简单。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值