Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
self-support
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
李俊赕
self-support
Commits
476a5aaa
Commit
476a5aaa
authored
Apr 14, 2021
by
Facius
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
https://git.banshouhui.com/lijundan/self-support
parents
3ca69a6b
d2b51eef
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
0 additions
and
361 deletions
+0
-361
qiniu.mixin.js
src/components/upload/qiniu.mixin.js
+0
-73
util.js
src/components/upload/util.js
+0
-288
No files found.
src/components/upload/qiniu.mixin.js
deleted
100644 → 0
View file @
3ca69a6b
export
const
uploadMixn
=
{
data
()
{
return
{
requestNum
:
0
,
// 当前请求数
}
},
methods
:
{
//七牛token获取的回调
getQiuToken
(
callback
)
{
this
.
$u
.
api
.
get
(
"api/kemean/aid/qn_upload"
).
then
(
data
=>
{
/*
*接口返回参数:
*visitPrefix:访问文件的域名
*token:七牛云上传token
*folderPath:上传的文件夹
*region: 地区 默认为:SCN
*/
callback
({
visitPrefix
:
data
.
visitPrefix
,
token
:
data
.
token
,
folderPath
:
data
.
folderPath
,
region
:
"SCN"
});
});
},
// 请求拦截
uploadStart
(
options
)
{
let
requestNum
=
this
.
requestNum
if
(
options
.
load
)
{
if
(
requestNum
<=
0
)
{
//打开加载动画
uni
.
showLoading
({
title
:
'加载中'
,
mask
:
true
});
}
requestNum
+=
1
;
this
.
requestNum
=
requestNum
}
// 图片上传大小限制
if
(
options
.
method
==
"FILE"
&&
options
.
maxSize
)
{
// 文件最大字节: options.maxSize 可以在调用方法的时候加入参数
const
maxSize
=
options
.
maxSize
;
for
(
let
item
of
options
.
files
)
{
if
(
item
.
size
>
maxSize
)
{
setTimeout
(()
=>
{
uni
.
showToast
({
title
:
"图片过大,请重新上传"
,
icon
:
"none"
});
},
500
);
return
false
;
}
}
}
//请求前加入token
// options.header['token'] = "你的项目登录token";
return
options
;
// return false 表示请求拦截,不会继续请求
},
uploadEnd
(
options
)
{
let
requestNum
=
this
.
requestNum
//判断当前接口是否需要加载动画
if
(
options
.
load
)
{
requestNum
=
requestNum
-
1
;
if
(
requestNum
<=
0
)
{
this
.
requestNum
=
requestNum
uni
.
hideLoading
();
}
}
}
}
}
src/components/upload/util.js
deleted
100644 → 0
View file @
3ca69a6b
import
qiniuUploader
from
'../upload/qiniuUploader.js'
;
//七牛云上传文件命名
export
const
randomChar
=
function
(
l
,
url
=
""
)
{
const
x
=
"0123456789qwertyuioplkjhgfdsazxcvbnm"
;
let
tmp
=
""
;
let
time
=
new
Date
();
for
(
let
i
=
0
;
i
<
l
;
i
++
)
{
tmp
+=
x
.
charAt
(
Math
.
ceil
(
Math
.
random
()
*
100000000
)
%
x
.
length
);
}
return
(
"file/"
+
url
+
time
.
getTime
()
+
tmp
);
}
//图片选择
export
const
chooseImage
=
function
(
data
)
{
return
new
Promise
((
resolve
,
reject
)
=>
{
uni
.
chooseImage
({
count
:
data
.
count
||
9
,
//默认9
sizeType
:
data
.
sizeType
||
[
'original'
,
'compressed'
],
//可以指定是原图还是压缩图,默认二者都有
sourceType
:
data
.
sourceType
||
[
'album'
,
'camera'
],
//从相册选择
success
:
function
(
res
)
{
resolve
(
res
.
tempFiles
);
},
fail
:
err
=>
{
reject
({
errMsg
:
err
.
errMsg
,
errCode
:
err
.
errCode
,
statusCode
:
0
,
});
}
});
});
}
//视频选择
export
const
chooseVideo
=
function
(
data
)
{
return
new
Promise
((
resolve
,
reject
)
=>
{
uni
.
chooseVideo
({
sourceType
:
data
.
sourceType
||
[
'album'
,
'camera'
],
//从相册选择
compressed
:
data
.
compressed
||
false
,
//是否压缩所选的视频源文件,默认值为 true,需要压缩。
maxDuration
:
data
.
maxDuration
||
60
,
//拍摄视频最长拍摄时间,单位秒。最长支持 60 秒。
camera
:
data
.
camera
||
'back'
,
//'front'、'back',默认'back'
success
:
function
(
res
)
{
let
files
=
[{
path
:
res
.
tempFilePath
}];
// #ifdef APP-PLUS || H5 || MP-WEIXIN
files
[
0
].
duration
=
res
.
duration
;
files
[
0
].
size
=
res
.
size
;
files
[
0
].
height
=
res
.
height
;
files
[
0
].
width
=
res
.
width
;
// #endif
// #ifdef H5
files
[
0
].
name
=
res
.
name
;
// #endif
resolve
(
files
);
},
fail
:
err
=>
{
reject
({
errMsg
:
err
.
errMsg
,
errCode
:
err
.
errCode
,
statusCode
:
0
,
});
}
});
});
}
// 七牛云上传
export
const
qiniuUpload
=
function
(
requestInfo
,
getQnToken
)
{
return
new
Promise
((
resolve
,
reject
)
=>
{
if
(
Array
.
isArray
(
requestInfo
.
files
))
{
let
len
=
requestInfo
.
files
.
length
;
let
fileList
=
new
Array
;
if
(
getQnToken
)
{
getQnToken
(
qnRes
=>
{
/*
*接口返回参数:
*visitPrefix:访问文件的域名
*token:七牛云上传token
*folderPath:上传的文件夹
*region: 地区 默认为:SCN
*/
let
prefixLen
=
qnRes
.
visitPrefix
.
length
;
if
(
qnRes
.
visitPrefix
.
charAt
(
prefixLen
-
1
)
==
'/'
){
qnRes
.
visitPrefix
=
qnRes
.
visitPrefix
.
substring
(
0
,
prefixLen
-
1
)
}
uploadFile
(
0
);
function
uploadFile
(
i
)
{
let
item
=
requestInfo
.
files
[
i
];
let
updateUrl
=
randomChar
(
10
,
qnRes
.
folderPath
);
let
fileData
=
{
fileIndex
:
i
,
files
:
requestInfo
.
files
,
...
item
};
if
(
item
.
name
)
{
fileData
.
name
=
item
.
name
;
let
nameArr
=
item
.
name
.
split
(
"."
);
updateUrl
+=
"."
+
nameArr
[
nameArr
.
length
-
1
];
}
// 交给七牛上传
qiniuUploader
.
upload
(
item
.
path
||
item
,
(
res
)
=>
{
fileData
.
url
=
res
.
imageURL
;
requestInfo
.
onEachUpdate
&&
requestInfo
.
onEachUpdate
({
url
:
res
.
imageURL
,
...
fileData
});
fileList
.
push
(
res
.
imageURL
);
if
(
len
-
1
>
i
)
{
uploadFile
(
i
+
1
);
}
else
{
resolve
(
fileList
);
}
},
(
error
)
=>
{
reject
(
error
);
},
{
region
:
qnRes
.
region
||
'SCN'
,
//地区
domain
:
qnRes
.
visitPrefix
,
// bucket 域名,下载资源时用到。
key
:
updateUrl
,
uptoken
:
qnRes
.
token
,
// 由其他程序生成七牛 uptoken
uptokenURL
:
'UpTokenURL.com/uptoken'
// 上传地址
},
(
res
)
=>
{
console
.
log
(
requestInfo
);
requestInfo
.
onProgressUpdate
&&
requestInfo
.
onProgressUpdate
(
Object
.
assign
({},
fileData
,
res
));
// console.log('上传进度', res.progress)
// console.log('已经上传的数据长度', res.totalBytesSent)
// console.log('预期需要上传的数据总长度', res.totalBytesExpectedToSend)
});
}
});
}
else
{
reject
({
errMsg
:
"请添加七牛云回调方法:getQnToken"
,
statusCode
:
0
});
}
}
else
{
reject
({
errMsg
:
"files 必须是数组类型"
,
statusCode
:
0
});
};
});
}
// 服务器URL上传
export
const
urlUpload
=
function
(
requestInfo
,
dataFactory
)
{
return
new
Promise
((
resolve
,
reject
)
=>
{
// 本地文件上传去掉默认Content-Type
if
(
requestInfo
.
header
[
'Content-Type'
])
{
delete
requestInfo
.
header
[
'Content-Type'
];
}
// 本地文件上传去掉默认Content-Type
if
(
requestInfo
.
header
[
'content-type'
])
{
delete
requestInfo
.
header
[
'content-type'
];
}
if
(
Array
.
isArray
(
requestInfo
.
files
))
{
// #ifdef APP-PLUS || H5
let
files
=
[];
let
fileData
=
{
files
:
requestInfo
.
files
,
name
:
requestInfo
.
name
||
"file"
};
requestInfo
.
files
.
forEach
(
item
=>
{
let
fileInfo
=
{
name
:
requestInfo
.
name
||
"file"
,
};
if
(
item
.
path
){
fileInfo
.
uri
=
item
.
path
;
}
else
{
fileInfo
.
file
=
item
;
}
files
.
push
(
fileInfo
);
});
let
config
=
{
url
:
requestInfo
.
url
,
files
:
files
,
header
:
requestInfo
.
header
,
//加入请求头
success
:
(
response
)
=>
{
//是否用外部的数据处理方法
if
(
requestInfo
.
isFactory
&&
dataFactory
)
{
//数据处理
dataFactory
({
...
requestInfo
,
response
:
response
,
}).
then
(
data
=>
{
requestInfo
.
onEachUpdate
&&
requestInfo
.
onEachUpdate
({
data
:
data
,
...
fileData
});
resolve
(
data
);
},
err
=>
{
reject
(
err
);
});
}
else
{
requestInfo
.
onEachUpdate
&&
requestInfo
.
onEachUpdate
({
data
:
response
,
...
fileData
});
resolve
(
response
);
}
},
fail
:
(
err
)
=>
{
reject
(
err
);
}
};
if
(
requestInfo
.
data
)
{
config
.
formData
=
requestInfo
.
data
;
}
const
uploadTask
=
uni
.
uploadFile
(
config
);
uploadTask
.
onProgressUpdate
(
res
=>
{
requestInfo
.
onProgressUpdate
&&
requestInfo
.
onProgressUpdate
(
Object
.
assign
({},
fileData
,
res
));
});
// #endif
// #ifdef MP
const
len
=
requestInfo
.
files
.
length
-
1
;
let
fileList
=
new
Array
;
fileUpload
(
0
);
function
fileUpload
(
i
)
{
let
item
=
requestInfo
.
files
[
i
];
let
fileData
=
{
fileIndex
:
i
,
files
:
requestInfo
.
files
,
...
item
};
let
config
=
{
url
:
requestInfo
.
url
,
filePath
:
item
.
path
,
header
:
requestInfo
.
header
,
//加入请求头
name
:
requestInfo
.
name
||
"file"
,
success
:
(
response
)
=>
{
//是否用外部的数据处理方法
if
(
requestInfo
.
isFactory
&&
dataFactory
)
{
//数据处理
dataFactory
({
...
requestInfo
,
response
:
response
,
}).
then
(
data
=>
{
fileList
.
push
(
data
);
requestInfo
.
onEachUpdate
&&
requestInfo
.
onEachUpdate
({
data
:
data
,
...
fileData
});
if
(
len
<=
i
)
{
resolve
(
fileList
);
}
else
{
fileUpload
(
i
+
1
);
}
},
err
=>
{
reject
(
err
);
});
}
else
{
requestInfo
.
onEachUpdate
&&
requestInfo
.
onEachUpdate
({
data
:
response
,
...
fileData
});
fileList
.
push
(
response
);
if
(
len
<=
i
)
{
resolve
(
fileList
);
}
else
{
fileUpload
(
i
+
1
);
}
}
},
fail
:
(
err
)
=>
{
reject
(
err
);
}
};
if
(
requestInfo
.
data
)
{
config
.
formData
=
requestInfo
.
data
;
}
const
uploadTask
=
uni
.
uploadFile
(
config
);
uploadTask
.
onProgressUpdate
(
res
=>
{
requestInfo
.
onProgressUpdate
&&
requestInfo
.
onProgressUpdate
(
Object
.
assign
({},
fileData
,
res
));
});
}
// #endif
}
else
{
reject
({
errMsg
:
"files 必须是数组类型"
,
statusCode
:
0
});
}
});
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment