服务端配合web端上传视频
来源:互联网 发布:马克斯cms 资源站 编辑:程序博客网 时间:2024/06/08 03:40
一般来说 我们使用阿里云的oss储存,上传文件大多数是在服务端上传,但是有的时候需要另一种上传方式—客户端上传。
资料来源:
https://doc.oss.aliyuncs.com/#_Toc336676736
https://help.aliyun.com/document_detail/31923.html?spm=5176.doc31853.2.4.p8mKxY
java后台获取policy和签名:
https://help.aliyun.com/document_detail/31926.html?spm=5176.doc31923.2.1.RAmEZT
这个文件中 我们修改了其部分源码 以便视频上传
kindeditor-all
客户端上传分两种,一种是url上传,一种是头部信息上传。这里介绍url上传
首先,web端需要从后台请求接口并拿到以下数据:
1、accesskey
2、policy
3、签名信息
4、文件名或路径
5、本项目在oss的访问域名
其中 accesskey是真实的accesskeyid,最重要的几个元素就是accesskey,签名,policy。缺一不可。
后台需要做的,是利用oss提供的接口,将签名和policy生成;
/****** 代码 *****/
首先利用ajax去请求后台接口
var objdata;
var file = this.files[0];
$.ajax({
url:‘http://’+headhttp+‘/oss/webOss’,
dataType:‘json’,
async:false,//设为同步 以避免ajax请求未完成就进行下一步操作
data:{“contentType”:file.type},
type:‘post’,
success:function(resp){
if(resp.code == 13000){
alert(resp.msg);
dialog.hideLoading();
return false;
}else{
flog = true;
objdata = resp;//将数据转移到全局参数中
}
}
});
接下来 就将请求的数据转为oss请求格式
var VideoPath = objdata.data.domain+“/”+objdata.data.folder;,//拼接视频路径
var glo_image_data = {
OSSAccessKeyId:objdata.data.accesskey,//需要根据自己的bucket填写 详情请见oss api
policy: objdata.data.policy.policy,//policyBase64规定了请求的表单域的合法性
signature: objdata.data.policy.useKeyId, //根据Access Key Secret和policy计算的签名信息,OSS验证该签名信息从而验证该Post请求的合法性
success_action_status:‘200’, // 让服务端返回200,不然,默认会返回204
key: objdata.data.folder, //文件名字,可设置路径
file:file//上传的文件
},
glo_image_upload_url = “http://huahan.oss-cn-hangzhou.aliyuncs.com/ “;//上传文件的路径
其余操作,请参考文档
然后是后台的接口:
public ReturnMsg getOssPerssions(String type) {
String dateTime = LocalDateTime.now().toString(“yyyyMMddHHmmss”);
String ramdom = RandomStringUtils.randomNumeric(6);
//生成文件名称
String fileName = String.format(“%s_%s.%s”, dateTime, ramdom,type);
// 检查type类型
Map<String, Object> data = new HashMap<>();
//根据上传路径和文件名称拼接完整的文件名,如
// video/123456789.MP4
String folder = HuaHanContant.POST_DIRECTORY_VIDEO+fileName;
Map<String, String> policy = StsServiceSample.getPost();//获取policy及签名
data.put(“folder”, folder);//完整文件名
data.put(“domain”, StsServiceSample.DOMAIN);//oss中的访问域名
data.put(“policy”, policy);
data.put(“accesskey”,StsServiceSample.webAccessKeyId);//真是的key
ReturnMsg result = new ReturnMsg(ReturnMsg.SUCCESS_CODE,ReturnMsg.SUCCESS_MSG);
result.setData(data);
return result;
}
这里是获取policy和签名
public static Map<String, String> getPost() {
Map<String, String> map = Maps.newHashMap();
//这里是唯一需要注意的地方:OSSclient的三个参数分别为:
//aliyun的http://后面一截::oss-cn-hangzhou.aliyuncs.com
//真实的key
//真实的Secret
OSSClient client =
new OSSClient(ENDPOINT.substring(7, ENDPOINT.length()), webAccessKeyId,webAccessKeySecret);
//以下部分,均为生成policy和签名的格式
String calculatePostSignature = null;
String string = null;
try {
long expireTime = 30;
long expireEndTime = System.currentTimeMillis() + expireTime * 1000;
Date date = new Date(expireEndTime);
PolicyConditions policyitions = new PolicyConditions();
policyitions.addConditionItem(PolicyConditions.COND_CONTENT_LENGTH_RANGE,0, 1048576000);
policyitions.addConditionItem(MatchMode.StartWith,PolicyConditions.COND_KEY, “post/video”);//文件上传路径
String postPolicy = client.generatePostPolicy(date, policyitions);
byte[] bytes = postPolicy.getBytes(“utf-8”);
string = BinaryUtil.toBase64String(bytes);//policy
calculatePostSignature = client.calculatePostSignature(postPolicy);//签名
map.put(“policy”, string);
map.put(“useKeyId”, calculatePostSignature);
} catch (Exception e) {
Assert.fail(e.getMessage());
}
return map;
}
阅读全文
0 0
- 服务端配合web端上传视频
- 服务端与WEB端
- android上传图片、视频、文件,服务端使用wcf接收
- C# 向服务器上传文件(客服端winform、服务端web)
- C# 向服务器上传文件(客服端winform、服务端web)
- 使用CGIC实现Web文件上传的服务端代码
- web 编程中实现文件上传的服务端实例
- 使用CGIC实现Web文件上传的服务端代码
- web客户端 向 wcf rest服务端 上传文件
- golang写服务端程序,作为文件上传与下载的服务器。配合HTML5以网页作为用户页面
- android端上传图片到服务端
- 服务端AppWeb与PC管理端配合使用的有关说明
- 服务端异步IO配合协程浅析
- 视频聊天服务端
- tcp视频传输-服务端
- 本地包含配合文件上传
- 服务端文件上传测试
- 断点上传服务端
- 数据库连接
- Selenium专题—弹出框处理
- /usr/bin/ld: 找不到 -lippicv(ubuntu 14.04安装opencv-3.1.0)
- Spring Security自定义Login
- 8种NoSQL数据库对比
- 服务端配合web端上传视频
- Java多线程--Fork Join分而治之
- Mybatis传递多个参数的解决办法(三种)
- Linux系统编程——特殊进程之孤儿进程
- c++宏定义
- AsyncTask
- js中sort()方法的用法,参数以及排序原理
- MIT波士顿咨询联合报告:在AI这件事上,多数企业都眼高手低
- 登录跳转到原地址