美文网首页markdown,git等辅助工具
使用SpringMVC上传视频到七牛云上

使用SpringMVC上传视频到七牛云上

作者: 远向 | 来源:发表于2017-03-26 22:02 被阅读1487次

    最近做项目用到了七牛云存储,就讲一下如何使用springMVC对视频上传到七牛云上。

    Java SDK依赖的第三方库及其版本如下:

    这个是使用maven管理的依赖。

    也可以自己手动下载jar包 通过这个地址   找到

    就可以下载需要的依赖的。


    上传使用的是服务器直传的方式。

    服务端直传是指客户利用七牛服务端SDK从服务端直接上传文件到七牛云,交互的双方一般都在机房里面,所以服务端可以自己生成上传凭证,然后利用SDK中的上传逻辑进行上传,最后从七牛云获取上传的结果,这个过程中由于双方都是业务服务器,所以很少利用到上传回调的功能,而是直接自定义returnBody来获取自定义的回复内容。

    构建配置类

    七牛存储支持空间创建在不同的机房,在使用七牛的Java SDK中的UploadManager上传文件之前,必须要构建一个上传用的Configuration对象,在该对象中,可以指定空间对应的Zone以及其他的一些影响上传的参数。

    //构造一个带指定Zone对象的配置类

    Configuration cfg =newConfiguration(Zone.zone0());

    //...其他参数参考类注释

    UploadManager uploadManager =newUploadManager(cfg);

    //...生成上传凭证,然后准备上传

    其中关于Zone对象和机房的关系如下:

    机房:Zone对象

    华东:Zone.zone0()

    华北:Zone.zone1()

    华南:Zone.zone2()

    北美:Zone.zoneNa0()

    最好是通过字节数组上传。

    不废话,来看springMVC的控制器。


    @Controller()

    public class UploadController {

    // 构造一个带指定Zone对象的配置类

    Configuration cfg = new Configuration(Zone.zone0());

    // ...其他参数参考类注释

    UploadManager uploadManager = new UploadManager(cfg);

    // ...生成上传凭证,然后准备上传

    String accessKey = "xxxx";

    String secretKey = "xxxx";

    //上传到指定的七牛云存储的一个空间中

    String bucket = "xxxx";

    // 默认不指定key的情况下,以文件内容的hash值作为文件名(上传后的文件名)

    String key = null;

    @RequestMapping("/upload")

    @ResponseBody

    public String upload(@RequestParam(value = "file", required = false) CommonsMultipartFile file) throws UnsupportedEncodingException {

    try {

    //得到上传文件的文件名,并赋值给key作为七牛存储的文件名

    key = file.getOriginalFilename();

    //把文件转化为字节数组

    InputStream is = file.getInputStream();

    ByteArrayOutputStream bos = new ByteArrayOutputStream();

    byte[] b = new byte[1024];

    int len = -1;

    while ((len = is.read(b)) != -1) {

    bos.write(b, 0, len);

    }

    byte[] uploadBytes = bos.toByteArray();

    //进行七牛的操作,不懂去七牛的sdk上看

    Auth auth = Auth.create(accessKey, secretKey);

    String upToken = auth.uploadToken(bucket);

    //默认上传接口回复对象

    DefaultPutRet putRet;

    try {

    //进行上传操作,传入文件的字节数组,文件名,上传空间,得到回复对象

    Response response = uploadManager.put(uploadBytes, key, upToken);

    putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);

    System.out.println(putRet.key);//key文件名

    System.out.println(putRet.hash);//hash七牛返回的文件存储的地址,可以使用这个地址加七牛给你提供的前缀访问到这个视频。

    上传凭证是你注册七牛云时候给的,就是accessKey和secretKey。bucket是你在七牛上自己建立的空间,也是必须的。key是文件名,不指定七牛会给你生成一个默认名,并且是返回这个上传的地址返回的地址。

    这样就可以把视频上传到七牛上了。

    相关文章

      网友评论

        本文标题:使用SpringMVC上传视频到七牛云上

        本文链接:https://www.haomeiwen.com/subject/dtbvnttx.html