`

七牛云API使用

 
阅读更多
七牛云官网http://www.qiniu.com/pricing
javaSDK使用eg:
import com.qiniu.util.Auth;
import java.io.IOException;
import com.qiniu.common.QiniuException;
import com.qiniu.http.Response;
import com.qiniu.storage.UploadManager;

public class UploadDemo {
  //设置好账号的ACCESS_KEY和SECRET_KEY
  String ACCESS_KEY = "Access_Key";
  String SECRET_KEY = "Secret_Key";
  //要上传的空间
  String bucketname = "Bucket_Name";
  //上传到七牛后保存的文件名
  String key = "my-java.png";
  //上传文件的路径
  String FilePath = "/.../...";

  //密钥配置
  Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
  //创建上传对象
  UploadManager uploadManager = new UploadManager();

  //简单上传,使用默认策略,只需要设置上传的空间名就可以了
  public String getUpToken(){
      return auth.uploadToken(bucketname);
  }

  public void upload() throws IOException{
    try {
      //调用put方法上传
      Response res = uploadManager.put(FilePath, key, getUpToken());
      //打印返回的信息
      System.out.println(res.bodyString());
      } catch (QiniuException e) {
          Response r = e.response;
          // 请求失败时打印的异常的信息
          System.out.println(r.toString());
          try {
              //响应的文本信息
            System.out.println(r.bodyString());
          } catch (QiniuException e1) {
              //ignore
          }
      }      
  }

  public static void main(String args[]) throws IOException{ 
    new UploadDemo().upload();
  }

}


覆盖上传

import java.io.IOException;

import com.qiniu.common.QiniuException;
import com.qiniu.http.Response;
import com.qiniu.storage.UploadManager;
import com.qiniu.util.Auth;
import com.qiniu.util.StringMap;

public class UploadDemo {
  //设置好账号的ACCESS_KEY和SECRET_KEY
  String ACCESS_KEY = "Access_Key";
  String SECRET_KEY = "Secret_Key";
  //要上传的空间
  String bucketname = "Bucket_Name";
  //上传到七牛后保存的文件名
  String key = "my-java.png";
  //上传文件的路径
  String filePath = "/.../...";

  //密钥配置
  Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
  //创建上传对象
  UploadManager uploadManager = new UploadManager();

  // 覆盖上传
  public String getUpToken(){
    //<bucket>:<key>,表示只允许用户上传指定key的文件。在这种格式下文件默认允许“修改”,已存在同名资源则会被本次覆盖。
    //如果希望只能上传指定key的文件,并且不允许修改,那么可以将下面的 insertOnly 属性值设为 1。
    //第三个参数是token的过期时间
      return auth.uploadToken(bucketname, key, 3600, new StringMap().put("insertOnly", 1 ));
  }

  public void upload() throws IOException{
    try {
      //调用put方法上传,这里指定的key和上传策略中的key要一致
      Response res = uploadManager.put(filePath, key, getUpToken());
      //打印返回的信息
      System.out.println(res.bodyString());
      } catch (QiniuException e) {
          Response r = e.response;
          // 请求失败时打印的异常的信息
          System.out.println(r.toString());
          try {
              //响应的文本信息
            System.out.println(r.bodyString());
          } catch (QiniuException e1) {
              //ignore
          }
      }      
  }

  public static void main(String args[]) throws IOException{ 
    new UploadDemo().upload();
  }

}


断点上传

import java.io.IOException;

import com.qiniu.common.QiniuException;
import com.qiniu.http.Response;
import com.qiniu.storage.Recorder;
import com.qiniu.storage.UploadManager;
import com.qiniu.storage.persistent.FileRecorder;
import com.qiniu.util.Auth;

public class UploadDemo {
  //设置好账号的ACCESS_KEY和SECRET_KEY
  String ACCESS_KEY = "Access_Key";
  String SECRET_KEY = "Secret_Key";
  //要上传的空间
  String bucketname = "Bucket_Name";
  //上传到七牛后保存的文件名
  String key = "my-java.png";
  //上传文件的路径
  String filePath = "/.../...";

  //密钥配置
  Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
  //创建上传对象
  UploadManager uploadManager = new UploadManager();

  // 覆盖上传
  public String getUpToken(){
    return auth.uploadToken(bucketname);
  }

  public void upload() throws IOException{
    //设置断点记录文件保存在指定文件夹或的File对象
    String recordPath = "/.../...";
    //实例化recorder对象
     Recorder recorder = new FileRecorder(recordPath);
     //实例化上传对象,并且传入一个recorder对象
     UploadManager uploadManager = new UploadManager(recorder);

    try {
      //调用put方法上传
      Response res = uploadManager.put("path/file", "key", getUpToken());
      //打印返回的信息
      System.out.println(res.bodyString());
      } catch (QiniuException e) {
          Response r = e.response;
          // 请求失败时打印的异常的信息
          System.out.println(r.toString());
          try {
              //响应的文本信息
            System.out.println(r.bodyString());
          } catch (QiniuException e1) {
              //ignore
          }
      }      
  }

  public static void main(String args[]) throws IOException{ 
    new UploadDemo().upload();
  }

}

上传&回调

import com.qiniu.util.Auth;
import com.qiniu.util.StringMap;

import java.io.IOException;

import com.qiniu.common.QiniuException;
import com.qiniu.http.Response;
import com.qiniu.storage.UploadManager;

public class UploadDemo {
  //设置好账号的ACCESS_KEY和SECRET_KEY
  String ACCESS_KEY = "Access_Key";
  String SECRET_KEY = "Secret_Key";
  //要上传的空间
  String bucketname = "Bucket_Name";
  //上传到七牛后保存的文件名
  String key = "my-java.png";
  //上传文件的路径
  String FilePath = "/.../...";

  //密钥配置
  Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
  //创建上传对象
  UploadManager uploadManager = new UploadManager();

  //设置callbackUrl以及callbackBody,七牛将文件名和文件大小回调给业务服务器
  public String getUpToken(){
      return auth.uploadToken(bucketname,null,3600,new StringMap()
          .put("callbackUrl","http://your.domain.com/callback")
          .put("callbackBody", "filename=$(fname)&filesize=$(fsize)"));
  }

  public void upload() throws IOException{
    try {
      //调用put方法上传
      Response res = uploadManager.put(FilePath, null, getUpToken());
      //打印返回的信息
      System.out.println(res.bodyString());
      } catch (QiniuException e) {
          Response r = e.response;
          // 请求失败时打印的异常的信息
          System.out.println(r.toString());
          try {
              //响应的文本信息
            System.out.println(r.bodyString());
          } catch (QiniuException e1) {
              //ignore
          }
      }      
  }

  public static void main(String args[]) throws IOException{ 
    new UploadDemo().upload();
  }

}

上传&预转持续化

以视频转码为例:

import com.qiniu.util.Auth;
import com.qiniu.util.StringMap;
import com.qiniu.util.UrlSafeBase64;

import java.io.IOException;

import com.qiniu.common.QiniuException;
import com.qiniu.http.Response;
import com.qiniu.storage.UploadManager;

public class UploadDemo {
  //设置好账号的ACCESS_KEY和SECRET_KEY
  String ACCESS_KEY = "Access_Key";
  String SECRET_KEY = "Secret_Key";
  //要上传的空间
  String bucketname = "Bucket_Name";
  //上传到七牛后保存的文件名
  String key = "my-java.png";
  //上传文件的路径
  String FilePath = "/.../...";

  //设置转码操作参数
  String fops = "avthumb/mp4/s/640x360/vb/1.25m";
  //设置转码的队列
  String pipeline = "yourpipelinename";

  //可以对转码后的文件进行使用saveas参数自定义命名,当然也可以不指定文件会默认命名并保存在当前空间。
  String urlbase64 = UrlSafeBase64.encodeToString("目标Bucket_Name:自定义文件key");
  String pfops = fops + "|saveas/"+ urlbase64;

  //密钥配置
  Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
  //创建上传对象
  UploadManager uploadManager = new UploadManager();

  //上传策略中设置persistentOps字段和persistentPipeline字段
  public String getUpToken(){
      return auth.uploadToken(bucketname,null,3600,new StringMap()
          .putNotEmpty("persistentOps", pfops)
          .putNotEmpty("persistentPipeline", pipeline), true);
  }

  public void upload() throws IOException{
    try {
      //调用put方法上传
      Response res = uploadManager.put(FilePath, null, getUpToken());
      //打印返回的信息
      System.out.println(res.bodyString());
      } catch (QiniuException e) {
          Response r = e.response;
          // 请求失败时打印的异常的信息
          System.out.println(r.toString());
          try {
              //响应的文本信息
            System.out.println(r.bodyString());
          } catch (QiniuException e1) {
              //ignore
          }
      }      
  }

  public static void main(String args[]) throws IOException{ 
    new UploadDemo().upload();
  }

}
队列pipeline 请参阅创建私有队列;转码操作 具体参数请参阅音视频转码;saveas 请参阅处理结果另存。

Tips:上面的 Demo 只是针对视频转码功能,如果您需要使用比如音视频切片、视频截图、视频拼接等功能只需要修改上面 fops 后面的参数即可,如:$fops = vframe/jpg/offset/1/w/480/h/360/rotate/90 就表示视频截图了。

可以看到上传成功后的行为主要是由上传凭证中的 上传策略 来指定。其中 上传策略 可以指定的行为不止这些,具体请参阅 上传策略。


文件下载

生成下载链接:

import com.qiniu.util.Auth;
public class DownloadDemo {
   //设置好账号的ACCESS_KEY和SECRET_KEY
   String ACCESS_KEY = "Access_Key";
   String SECRET_KEY = "Secret_Key";
   //密钥配置
   Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
   //构造私有空间的需要生成的下载的链接
   String URL = "http://bucketdomain/key";

   public void download(){
     //调用privateDownloadUrl方法生成下载链接,第二个参数可以设置Token的过期时间
     String downloadRUL = auth.privateDownloadUrl(URL,3600);
     System.out.println(downloadRUL);
   }
   public static void main(String args[]){
     new DownloadDemo().download();
   }
}

空间资源管理


获取文件信息

import com.qiniu.common.QiniuException;
import com.qiniu.http.Response;
import com.qiniu.storage.BucketManager;
import com.qiniu.storage.model.FileInfo;
import com.qiniu.util.Auth;

public class BucketManagerDemo {

  public static void main(String args[]){
    //设置需要操作的账号的AK和SK
    String ACCESS_KEY = "Access_Key";
    String SECRET_KEY = "Secret_Key";
    Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
    //实例化一个BucketManager对象
    BucketManager bucketManager = new BucketManager(auth);
    //要测试的空间和key,并且这个key在你空间中存在
    String bucket = "Bucket_Name";
    String key = "Bucket_key";
    try {
      //调用stat()方法获取文件的信息
      FileInfo info = bucketManager.stat(bucket, key);
      System.out.println(info.hash);
      System.out.println(info.key);
    } catch (QiniuException e) {
      //捕获异常信息
      Response r = e.response;
      System.out.println(r.toString());
    }
  }
}

移动单个文件

import com.qiniu.common.QiniuException;
import com.qiniu.http.Response;
import com.qiniu.storage.BucketManager;
import com.qiniu.storage.model.FileInfo;
import com.qiniu.util.Auth;

public class BucketManagerDemo {

  public static void main(String args[]){
    //设置需要操作的账号的AK和SK
    String ACCESS_KEY = "Access_Key";
    String SECRET_KEY = "Secret_Key";
    Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
    //实例化一个BucketManager对象
    BucketManager bucketManager = new BucketManager(auth);
    //要测试的空间和key,并且这个key在你空间中存在
    String bucket = "Bucket_Name";
    String key = "Bucket_key";
    //将文件从文件key移动到文件key2, 可以在不同bucket移动,同空间移动相当于重命名
    String key2 = "yourjavakey";
    try {
      //调用move方法移动文件
      bucketManager.move(bucket, key, bucket, key2);
    } catch (QiniuException e) {
      //捕获异常信息
      Response r = e.response;
      System.out.println(r.toString());
    }
  }
}

复制单个文件

import com.qiniu.common.QiniuException;
import com.qiniu.http.Response;
import com.qiniu.storage.BucketManager;
import com.qiniu.storage.model.FileInfo;
import com.qiniu.util.Auth;

public class BucketManagerDemo {

  public static void main(String args[]){
    //设置需要操作的账号的AK和SK
    String ACCESS_KEY = "Access_Key";
    String SECRET_KEY = "Secret_Key";
    Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
    //实例化一个BucketManager对象
    BucketManager bucketManager = new BucketManager(auth);
    //要测试的空间和key,并且这个key在你空间中存在
    String bucket = "Bucket_Name";
    String key = "Bucket_key";
    //将文件从文件key 复制到文件key2。 可以在不同bucket复制
    String key2 = "yourjavakey";
    try {
      //调用copy方法移动文件
      bucketManager.copy(bucket, key, bucket, key2);
    } catch (QiniuException e) {
      //捕获异常信息
      Response r = e.response;
      System.out.println(r.toString());
    }
  }
}

删除单个文件

import com.qiniu.common.QiniuException;
import com.qiniu.http.Response;
import com.qiniu.storage.BucketManager;
import com.qiniu.storage.model.FileInfo;
import com.qiniu.util.Auth;

public class BucketManagerDemo {

  public static void main(String args[]){
    //设置需要操作的账号的AK和SK
    String ACCESS_KEY = "Access_Key";
    String SECRET_KEY = "Secret_Key";
    Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
    //实例化一个BucketManager对象
    BucketManager bucketManager = new BucketManager(auth);
    //要测试的空间和key,并且这个key在你空间中存在
    String bucket = "Bucket_Name";
    String key = "Bucket_key";
    try {
      //调用delete方法移动文件
      bucketManager.delete(bucket, key);
    } catch (QiniuException e) {
      //捕获异常信息
      Response r = e.response;
      System.out.println(r.toString());
    }
  }
}

触发持久化操作

以视频转码为例:

import com.qiniu.common.QiniuException;
import com.qiniu.http.Response;
import com.qiniu.processing.OperationManager;
import com.qiniu.util.Auth;
import com.qiniu.util.StringMap;
import com.qiniu.util.UrlSafeBase64;

public class OperateDemo {

public static void main(String[] args) throws QiniuException {
  //设置账号的AK,SK
  String ACCESS_KEY = "Access_Key";
  String SECRET_KEY = "Secret_Key";
  Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
  //新建一个OperationManager对象
  OperationManager operater = new OperationManager(auth);
  //设置要转码的空间和key,并且这个key在你空间中存在
  String bucket = "Bucket_Name";
  String key = "Bucket_key";
  //设置转码操作参数
  String fops = "avthumb/mp4/s/640x360/vb/1.25m";
  //设置转码的队列
  String pipeline = "yourpipelinename";
  //可以对转码后的文件进行使用saveas参数自定义命名,当然也可以不指定文件会默认命名并保存在当前空间。
  String urlbase64 = UrlSafeBase64.encodeToString("目标Bucket_Name:自定义文件key");
  String pfops = fops + "|saveas/"+urlbase64;
  //设置pipeline参数
  StringMap params = new StringMap().putWhen("force", 1, true).putNotEmpty("pipeline", pipeline);
  try {
    String persistid = operater.pfop(bucket, key, pfops, params);
    //打印返回的persistid
    System.out.println(persistid);
  } catch (QiniuException e) {
    //捕获异常信息
      Response r = e.response;
      // 请求失败时简单状态信息
      System.out.println(r.toString());
      try {
         // 响应的文本信息
        System.out.println(r.bodyString());
      } catch (QiniuException e1) {
          //ignore
      }
  }
}
}
Tips:上面的Demo只是针对视频转码功能,如果您需要使用比如音视频切片、视频截图、视频拼接等功能只需要修改上面 fops 后面的参数即可,如:$fops = vframe/jpg/offset/1/w/480/h/360/rotate/90 就表示视频截图了。

通过上面的代码我们就可以触发将存储在空间中的视频从 mp4 格式转换成 m3u8 格式,并设置分辨率和视频码率。 但这个只是将转码这个耗时的操作提交到队列中,要想知道转码操作现在的状态, 需要根据返回的 persitentId 进行查询。如果您不方便持续轮询每个异步处理的进度和状态,七牛可以异步处理完成后通知您们的业务服务器。


分享到:
评论

相关推荐

    七牛云存储API

    通过深入理解和熟练使用七牛云存储API,开发者能够构建出高效、可靠的云存储解决方案,满足不同业务场景的需求,无论是简单的文件托管,还是复杂的多媒体处理和大数据管理,七牛云都能提供强大的技术支持。

    七牛云api存储pdf

    七牛云API存储PDF的知识点涵盖了七牛云私有云存储的全方位解决方案,其中包括其主要面对的客户群、业务场景、存储技术、性能特点、可用性考量以及成本投入等。 首先,七牛云私有云存储主要面向三类客户和四种交付...

    fastadmin 七牛云

    FastAdmin与七牛云的集成主要依赖于七牛云提供的SDK,该SDK封装了七牛云的各种API接口,包括文件上传、下载、管理等。FastAdmin通过调用这些SDK函数,实现了与七牛云的交互。同时,七牛云的CDN服务通过设置CNAME,将...

    C#七牛云存储完整示例代码

    这个DLL文件包含了七牛云API的所有接口和功能。在C#项目中,可以通过NuGet包管理器安装七牛云的官方SDK,或者直接将`qiniu.dll`文件添加到项目的引用目录。这样,我们就可以在代码中使用七牛云的相关类和方法。 在`...

    jsp使用七牛云API完成图片上传功能

    在本项目中,"jsp使用七牛云API完成图片上传功能"是一个典型的Web开发任务,主要涉及了Java服务器页面(JSP)技术和七牛云存储服务。七牛云提供了一套完善的API,允许开发者轻松地将文件上传到云端,实现高效、安全...

    Python-MyQiniuUtil对七牛云api封装了一些项目中比较实用的工具函数

    Python-MyQiniuUtil是针对七牛云API的一个实用工具库,主要目的是为了简化在Python项目中使用七牛云服务的过程。七牛云是一家提供云端存储和CDN加速服务的公司,其API广泛应用于数据备份、文件传输、网站静态资源...

    基于PHP的帝国CMS7.5七牛云图片附件同步、上传删除插件.zip

    3. **JSON解析**:七牛云API通常返回JSON格式的数据,需要使用`json_decode()`函数解析响应,获取必要的信息。 4. **错误处理**:在与七牛云API交互过程中,可能会遇到各种异常,因此插件需要有良好的错误处理机制...

    七牛云文件上传案例(对象存储)

    5. **七牛云API**: - 七牛云提供了一系列RESTful API,开发者可以通过这些API进行文件管理,包括上传、删除、列举、获取文件信息等操作。 - 在Java环境下,可以直接使用SDK封装好的方法,也可以通过调用HTTP API...

    java上传图片到七牛云 七牛云 七牛 图片上传 demo JS java

    在本文中,我们将深入探讨如何使用Java和JavaScript将图片上传到七牛云存储服务。七牛云是一个提供云端存储和CDN加速的平台,广泛应用于图片、视频等多媒体资源的托管。图片上传功能是其核心服务之一,为开发者提供...

    pbootcms-3.0.3-七牛云插件.7z

    安装完成后,填写七牛云的API密钥和存储空间信息,系统会自动保存配置,至此,七牛云插件就已经成功集成。 使用七牛云插件后,PbootCMS的文件上传功能将发生显著变化。当用户在编辑文章或产品时,上传图片或其他...

    PHP七牛云分块上传

    七牛云是一家提供云端存储服务的公司,其API允许开发者直接将文件上传至七牛云存储,无需通过中间服务器,大大提升了上传效率。 首先,我们需要了解七牛云的分块上传(Chunked Upload)机制。当文件过大时,分块...

    七牛云文件批量上传,下载C#

    在IT行业中,七牛云是一个知名的云存储服务提供商,提供了丰富的API和SDK,方便开发者进行文件的上传、下载以及管理。本项目主要涉及的是使用C#语言实现七牛云的文件批量上传、下载功能,同时考虑了文件夹的多层级...

    2018最新七牛云上传文件易语言源码

    本源码资源由"post老司机"创作,提供了易语言环境下与七牛云API对接的代码示例,帮助开发者快速理解和集成七牛云的文件上传功能。资源界面可能包括了源码的展示、简单的使用说明或者运行截图,但具体信息由于描述中...

    七牛云插件

    七牛云是一家提供云端数据存储和处理服务的公司,它的云存储解决方案为开发者和企业提供了一个安全、高效且易于使用的平台,以托管和管理他们的多媒体内容,如图片、视频等。 在小程序开发中,七牛云插件扮演了关键...

    DESTOON7.0七牛云FTP图片上传.rar

    4. **七牛云/阿里云API集成**:除了FTP上传,可能还涉及到七牛云或阿里云的SDK,通过调用其提供的API接口进行文件上传,如七牛云的`upload`方法。这一步可能包括了获取上传凭证、设置文件元信息等操作。 5. **图片...

    微信小程序调用uploadFile向七牛云存储上传图片

    在上传文件到七牛云之前,需要通过七牛云的API获取一个上传Token。这个Token包含了上传策略,包括了你的Bucket信息、过期时间等,确保上传的安全性。你可以使用七牛云的SDK或者自己编写HTTP请求来获取Token。通常,...

    java对七牛云的操作(包含所有jar包)

    Java对七牛云的操作主要涉及的是使用Java SDK与七牛云服务进行交互,包括文件的上传、下载、管理等操作。...在项目中使用七牛云SDK时,应仔细阅读官方文档,理解每个API的功能和使用场景,以便更好地利用七牛云的服务。

    七牛云存储删除文件和获取token

    在IT行业中,七牛云存储是一个广泛使用的云存储服务,为开发者提供了强大的数据存储和处理能力。本话题主要关注如何在Android客户端上实现文件的删除以及获取上传所需的Token。 首先,我们要理解“七牛云存储”这个...

    在delphi xe7中调用七牛云存储api上传演示

    在本文中,我们将深入探讨如何在Delphi XE7中调用七牛云存储API来实现文件上传功能。七牛云存储是一个强大的云端存储服务,提供了丰富的API接口,支持多种编程语言,包括 Delphi。我们将重点讲解以下几个方面: 1. ...

    七牛云jar包

    在使用这些jar包时,首先需要在项目中引入它们,可以通过Maven或Gradle等构建工具添加依赖,然后就可以通过七牛云SDK的API进行编程。例如,初始化一个七牛云的客户端,配置好AccessKey和SecretKey,接着创建一个上传...

Global site tag (gtag.js) - Google Analytics