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

最近做项目用到了七牛云存储,就讲一下如何使用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是文件名,不指定七牛会给你生成一个默认名,并且是返回这个上传的地址返回的地址。

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

推荐阅读更多精彩内容