获取上传地址和凭证

当您使用上传地址和凭证方式上传媒体资源时,需要在应用服务端部署授权服务,从点播服务获取上传地址和凭证给客户端使用。

背景信息

您需要提前了解使用上传地址和凭证的整体上传流程

获取上传地址和凭证

您的应用服务器需要根据不同的媒体类型调用不同的OpenAPI,获取上传地址和凭证。

  1. 提供获取音视频上传地址和凭证的接口:服务端调用CreateUploadVideo - 获取音视频上传地址和凭证

  2. 提供刷新音视频上传地址和凭证的接口:服务端调用RefreshUploadVideo - 刷新视频上传凭证

  3. 提供获取图片上传地址和凭证的接口:服务端调用CreateUploadImage - 获取图片上传地址和凭证

  4. 提供获取辅助媒资上传地址和凭证的接口:服务端调用CreateUploadAttachedMedia - 获取辅助媒资上传地址和凭证

步骤一:准备RAM用户

创建RAM用户,注意以下几点:

  1. 设置允许使用永久AccessKey访问

  2. 妥善保管获取的AccessKey

步骤二:为RAM用户授权

RAM用户授予调用对应OpenAPI的权限。您可以根据需要选择以下系统策略。详细授权操作请参见RAM用户授权

策略名称

说明

AliyunVodFullAccess

管理视频点播服务(VOD)的权限

AliyunVodUploadAuth

视频点播服务(VOD)上传权限

步骤三:调用OpenAPI

本文以Java编程语言获取视频资源的上传地址和凭证为例进行介绍。请提前在系统环境中配置AccessKey。若要给客户端提供API接口,请对示例代码进行改造。

V1.0 SDK

Maven中添加如下依赖信息:

<dependency>
  <groupId>com.aliyun</groupId>
  <artifactId>aliyun-java-sdk-core</artifactId>
  <version>4.7.3</version>
</dependency>
<dependency>
  <groupId>com.aliyun</groupId>
  <artifactId>aliyun-java-sdk-vod</artifactId>
  <version>2.16.32</version>
</dependency>
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.profile.DefaultProfile;
import com.google.gson.Gson;
import java.util.*;
import com.aliyuncs.vod.model.v20170321.*;
/*
pom.xml
<dependency>
  <groupId>com.aliyun</groupId>
  <artifactId>aliyun-java-sdk-core</artifactId>
  <version>4.6.0</version>
</dependency>
*/

public class CreateUploadVideo {

    public static void main(String[] args) {

        // Please ensure that the environment variables ALIBABA_CLOUD_ACCESS_KEY_ID and ALIBABA_CLOUD_ACCESS_KEY_SECRET are set.
        DefaultProfile profile = DefaultProfile.getProfile("cn-shanghai", System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));

        IAcsClient client = new DefaultAcsClient(profile);

        CreateUploadVideoRequest request = new CreateUploadVideoRequest();
        request.setFileName("aliyun.mp4");
        request.setTitle("aliyun");

        try {
            CreateUploadVideoResponse response = client.getAcsResponse(request);
            System.out.println(new Gson().toJson(response));
        } catch (ServerException e) {
            e.printStackTrace();
        } catch (ClientException e) {
            System.out.println("ErrCode:" + e.getErrCode());
            System.out.println("ErrMsg:" + e.getErrMsg());
            System.out.println("RequestId:" + e.getRequestId());
        }

    }
}

V2.0 SDK

Maven中添加如下依赖信息:

<dependency>
   <groupId>com.aliyun</groupId>
   <artifactId>vod20170321</artifactId>
   <version>3.6.4</version>
</dependency>
// This file is auto-generated, don't edit it. Thanks.
package com.aliyun.sample;

import com.aliyun.tea.*;

public class Sample {

    /**
     * <b>description</b> :
     * <p>使用凭据初始化账号Client</p>
     * @return Client
     * 
     * @throws Exception
     */
    public static com.aliyun.vod20170321.Client createClient() throws Exception {
        // 工程代码建议使用更安全的无AK方式,凭据配置方式请参见:https://help.aliyun.com/document_detail/378657.html。
        com.aliyun.credentials.Client credential = new com.aliyun.credentials.Client();
        com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
                .setCredential(credential);
        // Endpoint 请参考 https://api.aliyun.com/product/vod
        config.endpoint = "vod.cn-shanghai.aliyuncs.com";
        return new com.aliyun.vod20170321.Client(config);
    }

    public static void main(String[] args_) throws Exception {
        
        com.aliyun.vod20170321.Client client = Sample.createClient();
        com.aliyun.vod20170321.models.CreateUploadVideoRequest createUploadVideoRequest = new com.aliyun.vod20170321.models.CreateUploadVideoRequest()
                .setFileName("aliyun.mp4")
                .setTitle("aliyun");
        com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
        try {
            com.aliyun.vod20170321.models.CreateUploadVideoResponse resp = client.createUploadVideoWithOptions(createUploadVideoRequest, runtime);
            com.aliyun.teaconsole.Client.log(com.aliyun.teautil.Common.toJSONString(resp));
        } catch (TeaException error) {
            // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
            // 错误 message
            System.out.println(error.getMessage());
            // 诊断地址
            System.out.println(error.getData().get("Recommend"));
            com.aliyun.teautil.Common.assertAsString(error.message);
        } catch (Exception _error) {
            TeaException error = new TeaException(_error.getMessage(), _error);
            // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
            // 错误 message
            System.out.println(error.getMessage());
            // 诊断地址
            System.out.println(error.getData().get("Recommend"));
            com.aliyun.teautil.Common.assertAsString(error.message);
        }        
    }
}