|
@@ -250,6 +250,7 @@ function loadUploadL(i,e,key,url,assets)
|
|
|
var domain = e.attr('domain');
|
|
|
var path = e.attr('path');
|
|
|
var cover = e.attr('cover');
|
|
|
+ var type = e.attr('m');
|
|
|
var search = '';
|
|
|
if (e.attr('upload_search_value')) {
|
|
|
search = e.attr('upload_search_value');
|
|
@@ -260,118 +261,188 @@ function loadUploadL(i,e,key,url,assets)
|
|
|
var uploadUrl = url;
|
|
|
url = domain;
|
|
|
|
|
|
- var layerConfig = {
|
|
|
- useCdnDomain: true,
|
|
|
- disableStatisticsReport: false,
|
|
|
- retryCount: 6
|
|
|
- };
|
|
|
- var putExtra = {
|
|
|
- fname: "",
|
|
|
- params: {},
|
|
|
- mimeType: null
|
|
|
- };
|
|
|
+
|
|
|
layui.use(['layer','element'], function() {
|
|
|
var layer = layui.layer;
|
|
|
var element = layui.element;
|
|
|
$("#" + id).unbind("change").bind("change",function() {
|
|
|
var file = this.files[0];
|
|
|
- // eslint-disable-next-line
|
|
|
- var finishedAttr = [];
|
|
|
- // eslint-disable-next-line
|
|
|
- var compareChunks = [];
|
|
|
- var observable;
|
|
|
+
|
|
|
if (file) {
|
|
|
|
|
|
- element.progress(id + '_progress', '0%')
|
|
|
+ element.progress(id + '_progress', '0%');
|
|
|
layer.load();
|
|
|
|
|
|
- var filename = file.name;
|
|
|
- var temp = filename.split('.');
|
|
|
- putExtra.params["x:name"] = temp[0];
|
|
|
-
|
|
|
- filename = path + hex_md5(file.name) + '.' + temp[temp.length-1];
|
|
|
-
|
|
|
- //不覆盖
|
|
|
- if (cover == 2) {
|
|
|
- var timestamp = Date.parse(new Date());
|
|
|
- filename = path + hex_md5(file.name + '_' + timestamp) + '.' + temp[temp.length-1];
|
|
|
- }
|
|
|
+ var filename = file.name;
|
|
|
+ var temp = filename.split('.');
|
|
|
+ var name = temp[0];
|
|
|
+ filename = path + hex_md5(file.name) + '.' + temp[temp.length-1];
|
|
|
|
|
|
- // 设置next,error,complete对应的操作,分别处理相应的进度信息,错误信息,以及完成后的操作
|
|
|
- var error = function(err) {
|
|
|
- //请求异常回调
|
|
|
- layer.alert('文件上传错误1');
|
|
|
- element.progress(id + '_progress', '0%')
|
|
|
- $('#' + id + '_progress').hide();
|
|
|
- layer.closeAll('loading');
|
|
|
- };
|
|
|
+ //不覆盖
|
|
|
+ if (cover == 2) {
|
|
|
+ var timestamp = Date.parse(new Date());
|
|
|
+ filename = path + hex_md5(file.name + '_' + timestamp) + '.' + temp[temp.length-1];
|
|
|
+ }
|
|
|
|
|
|
- var complete = function(res) {
|
|
|
- //&& res.key.match(/\.(jpg|jpeg|png|gif)$/)
|
|
|
- if (res.key) {
|
|
|
- element.progress(id + '_progress', '0%')
|
|
|
+ // 设置next,error,complete对应的操作,分别处理相应的进度信息,错误信息,以及完成后的操作
|
|
|
+ var error = function(err) {
|
|
|
+ //请求异常回调
|
|
|
+ layer.alert('文件上传错误');
|
|
|
+ element.progress(id + '_progress', '0%')
|
|
|
$('#' + id + '_progress').hide();
|
|
|
layer.closeAll('loading');
|
|
|
- var data = {};
|
|
|
- if (res.hash) {
|
|
|
-
|
|
|
- if (search.indexOf('#') != -1) {
|
|
|
- var temp = search.split('#');
|
|
|
- search = temp[0];
|
|
|
- if (temp[1]) {
|
|
|
- temp[1] = $('#update_'+temp[1]+'_value').val();
|
|
|
- if (temp[1] > 0) {
|
|
|
- search = search + '_' + temp[1];
|
|
|
+ };
|
|
|
+
|
|
|
+ var complete = function(res) {
|
|
|
+ //&& res.key.match(/\.(jpg|jpeg|png|gif)$/)
|
|
|
+ if (res.key) {
|
|
|
+ element.progress(id + '_progress', '0%')
|
|
|
+ $('#' + id + '_progress').hide();
|
|
|
+ layer.closeAll('loading');
|
|
|
+ var data = {};
|
|
|
+ if (res.hash) {
|
|
|
+ if (search.indexOf('#') != -1) {
|
|
|
+ var temp = search.split('#');
|
|
|
+ search = temp[0];
|
|
|
+ if (temp[1]) {
|
|
|
+ temp[1] = $('#update_'+temp[1]+'_value').val();
|
|
|
+ if (temp[1] > 0) {
|
|
|
+ search = search + '_' + temp[1];
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
+
|
|
|
+ $.getJSON(uploadUrl.replace('save.start', 'yun.addFile'), {source:file.name,file:res.key, key:key, search:search});
|
|
|
+ data.status = 1;
|
|
|
+ data.name = res.key;
|
|
|
+ data.url = host + res.key;
|
|
|
+
|
|
|
+ loadUploadSet(e,value,data,key);
|
|
|
+ } else {
|
|
|
+ layer.alert('文件上传错误');
|
|
|
+ return false;
|
|
|
}
|
|
|
}
|
|
|
+ };
|
|
|
+
|
|
|
+ if (type == 'qiniu') {
|
|
|
+ qiniuHandle(id, name, token, file, filename, element, error, complete);
|
|
|
+ } else if(type == 'oss') {
|
|
|
+ ossHandle(id, name, token, file, filename, element, error, complete);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ });
|
|
|
+}
|
|
|
|
|
|
- $.getJSON(uploadUrl.replace('save.start', 'qiniu.addFile'), {source:file.name,file:res.key, key:key, search:search});
|
|
|
- data.status = 1;
|
|
|
- data.name = res.key;
|
|
|
- data.url = host + res.key;
|
|
|
+function ossHandle(id, name, token, file, filename, element, error, complete)
|
|
|
+{
|
|
|
+ console.info(id);
|
|
|
|
|
|
- loadUploadSet(e,value,data,key);
|
|
|
- } else {
|
|
|
- layer.alert('文件上传错误2');
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
- };
|
|
|
-
|
|
|
- var next = function(response) {
|
|
|
- var chunks = response.chunks||[];
|
|
|
- var total = response.total;
|
|
|
- // 这里对每个chunk更新进度,并记录已经更新好的避免重复更新,同时对未开始更新的跳过
|
|
|
- for (var i = 0; i < chunks.length; i++) {
|
|
|
- if (chunks[i].percent === 0 || finishedAttr[i]){
|
|
|
- continue;
|
|
|
- }
|
|
|
- if (compareChunks[i].percent === chunks[i].percent){
|
|
|
- continue;
|
|
|
- }
|
|
|
- if (chunks[i].percent === 100){
|
|
|
- finishedAttr[i] = true;
|
|
|
- }
|
|
|
- }
|
|
|
- $('#' + id + '_progress').show();
|
|
|
- element.progress(id + '_progress', parseInt(total.percent)+'%')
|
|
|
- compareChunks = chunks;
|
|
|
- };
|
|
|
-
|
|
|
- var subObject = {
|
|
|
- next: next,
|
|
|
- error: error,
|
|
|
- complete: complete
|
|
|
- };
|
|
|
- var subscription;
|
|
|
- // 调用sdk上传接口获得相应的observable,控制上传和暂停
|
|
|
- observable = qiniu.upload(file, filename, token, putExtra, layerConfig);
|
|
|
-
|
|
|
- subscription = observable.subscribe(subObject);
|
|
|
- }
|
|
|
+ let OSS = require('ali-oss')
|
|
|
+
|
|
|
+ let ossConfig = {
|
|
|
+ // region以杭州为例(oss-cn-hangzhou),其他region按实际情况填写。
|
|
|
+ region: 'oss-cn-beijing',
|
|
|
+ // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录RAM控制台创建RAM账号。
|
|
|
+ accessKeyId: '<Your AccessKeyId>',
|
|
|
+ accessKeySecret: '<Your AccessKeySecret>',
|
|
|
+ bucket: 'Your bucket name'
|
|
|
+ }
|
|
|
+
|
|
|
+ let client = new OSS(ossConfig);
|
|
|
+
|
|
|
+ let tempCheckpoint;
|
|
|
+
|
|
|
+ // 定义上传方法。
|
|
|
+ async function multipartUpload () {
|
|
|
+ try {
|
|
|
+ // object-key可以自定义为文件名(例如file.txt)或目录(例如abc/test/file.txt)的形式,实现将文件上传至当前Bucket或Bucket下的指定目录。
|
|
|
+ let result = await client.multipartUpload('object-key', 'file-object', {
|
|
|
+ progress: function (p, checkpoint) {
|
|
|
+ // 断点记录点。浏览器重启后无法直接继续上传,您需要手动触发上传操作。
|
|
|
+ tempCheckpoint = checkpoint;
|
|
|
+ },
|
|
|
+ meta: { year: 2020, people: 'test' },
|
|
|
+ mime: 'image/jpeg'
|
|
|
+ })
|
|
|
+ } catch(e){
|
|
|
+ console.log(e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 开始分片上传。
|
|
|
+ multipartUpload();
|
|
|
+
|
|
|
+ // 暂停分片上传。
|
|
|
+ client.cancel();
|
|
|
+
|
|
|
+ // 恢复上传。
|
|
|
+ let resumeclient = new OSS(ossConfig);
|
|
|
+ async function resumeUpload () {
|
|
|
+ try {
|
|
|
+ let result = await resumeclient.multipartUpload('object-key', 'file-object', {
|
|
|
+ progress: function (p, checkpoint) {
|
|
|
+ tempCheckpoint = checkpoint;
|
|
|
+ },
|
|
|
+ checkpoint: tempCheckpoint,
|
|
|
+ meta: { year: 2020, people: 'test' },
|
|
|
+ mime: 'image/jpeg'
|
|
|
})
|
|
|
- });
|
|
|
+ } catch (e) {
|
|
|
+ console.log(e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ resumeUpload();
|
|
|
+}
|
|
|
+
|
|
|
+function qiniuHandle(id, name, token, file, filename, element, error, complete)
|
|
|
+{
|
|
|
+ // eslint-disable-next-line
|
|
|
+ var finishedAttr = [];
|
|
|
+ // eslint-disable-next-line
|
|
|
+ var compareChunks = [];
|
|
|
+ var observable;
|
|
|
+ var subscription;
|
|
|
+ var next = function(response) {
|
|
|
+ var chunks = response.chunks||[];
|
|
|
+ var total = response.total;
|
|
|
+ // 这里对每个chunk更新进度,并记录已经更新好的避免重复更新,同时对未开始更新的跳过
|
|
|
+ for (var i = 0; i < chunks.length; i++) {
|
|
|
+ if (chunks[i].percent === 0 || finishedAttr[i]){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if (compareChunks[i].percent === chunks[i].percent){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if (chunks[i].percent === 100){
|
|
|
+ finishedAttr[i] = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $('#' + id + '_progress').show();
|
|
|
+ element.progress(id + '_progress', parseInt(total.percent)+'%')
|
|
|
+ compareChunks = chunks;
|
|
|
+ };
|
|
|
+
|
|
|
+ var subObject = {
|
|
|
+ next: next,
|
|
|
+ error: error,
|
|
|
+ complete: complete
|
|
|
+ };
|
|
|
+ // 调用sdk上传接口获得相应的observable,控制上传和暂停
|
|
|
+ var layerConfig = {
|
|
|
+ useCdnDomain: true,
|
|
|
+ disableStatisticsReport: false,
|
|
|
+ retryCount: 6
|
|
|
+ };
|
|
|
+ var putExtra = {
|
|
|
+ fname: "",
|
|
|
+ params: {"x:name":name},
|
|
|
+ mimeType: null
|
|
|
+ };
|
|
|
+ observable = qiniu.upload(file, filename, token, putExtra, layerConfig);
|
|
|
+ subscription = observable.subscribe(subObject);
|
|
|
}
|
|
|
|
|
|
function loadUpload(i,e,key,url,assets)
|