示例:
- 前端封装方法并调用,直接上传至阿里云
此方法需要在阿里云拥有账号,并配置好才可使用,配置就不贴出了,只贴出前端代码。
/**
*
* 阿里云 oss (图片、视频上传) 插件
*
* @param opts 参数详情
* opts = {
* timeout:"请求过期时间(配置项 timeout, 默认 60000)",
* partSize:"分片大小(配置项 partSize, 默认 1048576)",
* parallel:"上传分片数(配置项 parallel, 默认 5)",
* retryCount:"网络失败重试次数(配置项 retryCount, 默认 3)",
* retryDuration:"网络失败重试间隔(配置项 retryDuration, 默认 2)",
* region:"配置项 region, 默认 cn-shanghai",
* userId:"阿里云账号ID,默认1111",
* stsUrl:"获取stsToken的地址",
* videoInfoUrl:"获取视频信息的地址",
* cateId:“视频分类id”,
*
* addFileSuccess:"添加文件成功回调",
* onUploadstarted:"开始上传的回调",
* onUploadSucceed:"成功上传的回调",
* onUploadFailed:"上传失败的回调",
* onUploadCanceled:"取消上传的回调",
* onUploadProgress:"上传过程回调",
* onUploadEnd:""上传完成回调
* }
*/
jQuery.fn.extend({
aliyunUploader: function (opts,callback) {
var stsUrl = opts.stsUrl;
var videoInfoUrl = opts.videoInfoUrl;
if(!stsUrl){
stsUrl = 'https://xx.xxxx.com/upload/oss/createSecurityToken';
}
if(!videoInfoUrl){
videoInfoUrl = 'https://xx.xxxx.com/upload/oss/getVideoInfo';
}
const _this = this;
var dtd = $.Deferred();
var wait = function(dtd){
// 获取页面所有的script标签
var scripts = document.getElementsByTagName("script");
// 匹配当前js路径
var url;
for (var i = 0;i < scripts.length; i++){
url = scripts[i].src;
if(url.indexOf("aliyunUpload.js") != -1) break;
}
var path = url.replace('aliyunUpload.js','');
var urls = [
path + "lib/aliyun-upload-sdk/aliyun-upload-sdk-1.5.0.min.js",
path + "lib/aliyun-upload-sdk/lib/es6-promise.min.js",
path + "lib/aliyun-upload-sdk/lib/aliyun-oss-sdk-5.3.1.min.js"
];
var sta = 0;
// 加载js
var loadScript = function () {
$.getScript(urls[sta],function(data, textStatus, jqxhr){
sta += textStatus == 'success'?1:0;
if(sta == 3){
console.log("JS success!");
dtd.resolve();
}else {
loadScript();
}
});
};
loadScript();
return dtd;
};
$.when(wait(dtd)).done(function(){
var uploader = new AliyunUpload.Vod({
timeout: opts.timeout || 60000,
partSize: opts.partSize || 1048576,
parallel: opts.parallel || 5,
retryCount: opts.retryCount || 3,
retryDuration: opts.retryDuration || 2,
region: opts.region