前端完整上传代码如下
// 七牛token
var qiniuToken = 'RmRBqO9olxxPJ3dNKaq-9YxOqS46vZj-AMTGc-o2:ENiL_XazSwOFYClV20BjTmr_M5E=:eyJzY29wZ7I6InlvdWfYW9pdCIsImRlYWRsaW5lIjoxNTY3NzczMDMxfQ=='
$("#upload").click(function(){
var obj = $("#file");
// 获取文件在本地的绝对路径 C:\fakepath\cover.jpg
var fileName = obj.val();
// 获取文件后缀名 .jpg
var suffix = fileName.substring(fileName.lastIndexOf("."),fileName.length)
// 获取文件对象
var file = obj.get(0).files[0]
// 获取文件大小 单位KB
var size = (file.size / 1024).toFixed(2)
// 设置上传的七牛key 上传成功需要把这个值提交到后台
var qiniuKey = "user/image/20190906/" + suffix
// 上传文件到七牛
var observer = {
//上传过程的监听函数 result参数带有total字段的 object,包含loaded、total、percent三个属性)
next(result){
// 实现上传进度条 ...
console.log(result)
},
//上传失败回调
error(err){
console.log(err.message)
},
// 上传完成回调
complete(res){
// 提交数据给后端同事等业务逻辑 ....
console.log(res)
}
};
var putExtra = {
//原文件名
fname: "",
//用来放置自定义变量
params: {},
//限制上传文件类型
mimeType: null
};
var config = {
//存储区域(z0:代表华东;z2:代表华南,不写默认自动识别)
region:qiniu.region.z2,
//分片上传的并发请求量
concurrentRequestLimit:2
};
var observable = qiniu.upload(file,qiniuKey,qiniuToken,putExtra,config);
// 上传开始
var subscription = observable.subscribe(observer);
// 取消上传
// subscription.unsubscribe();
})