/**
							 | 
						|
								 * 阿里云OSS工具类
							 | 
						|
								 */
							 | 
						|
								import OSSConfig from "@/utils/oss-upload/oss/OSSConfig.js"
							 | 
						|
								import ossConfig from '@/config.js'
							 | 
						|
								
							 | 
						|
								/**
							 | 
						|
								 * 生成一个随机的Key
							 | 
						|
								 */
							 | 
						|
								function storeKey() {
							 | 
						|
									let s = [];
							 | 
						|
									let hexDigits = "0123456789abcdef";
							 | 
						|
									for (let i = 0; i < 36; i++) {
							 | 
						|
										s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
							 | 
						|
									}
							 | 
						|
									s[14] = "4";
							 | 
						|
									s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1);
							 | 
						|
									s[8] = s[13] = s[18] = s[23] = "-";
							 | 
						|
									return s.join("");
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								/**
							 | 
						|
								 * 根据当天日期在OSS端生成文件夹
							 | 
						|
								 */
							 | 
						|
								function storeFolder() {
							 | 
						|
									const date = new Date();
							 | 
						|
									const formatNumber = n => {
							 | 
						|
										n = n.toString()
							 | 
						|
										return n[1] ? n : '0' + n
							 | 
						|
									}
							 | 
						|
									return [date.getFullYear(), date.getMonth() + 1, date.getDate()].map(formatNumber).join('-')
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								/**
							 | 
						|
								 * 阿里云OSS上传文件, 所有具体功能的工具函数均基于此
							 | 
						|
								 * 注意, resolve时一定为上传成功, 返回OSS上的Key
							 | 
						|
								 * @param filePath 待上传文件的URI
							 | 
						|
								 * @param key 存储桶中的目标文件名
							 | 
						|
								 * @param folder 存储桶中的目标文件夹
							 | 
						|
								 */
							 | 
						|
								export function ossUpload(filePath, key = storeKey(), folder = storeFolder()) {
							 | 
						|
									return new Promise((resolve, reject) => {
							 | 
						|
										if (folder && folder?.length > 0) {
							 | 
						|
											if (folder[0] == "/") folder = folder.slice(1, folder.length)
							 | 
						|
											if (folder[folder.length - 1] != "/") folder += "/"
							 | 
						|
											key = folder + key
							 | 
						|
										}
							 | 
						|
										const filePrefixArr = filePath.split(".")
							 | 
						|
										key += `.${filePrefixArr[filePrefixArr.length - 1]}`
							 | 
						|
										let config = {
							 | 
						|
											url: OSSConfig.host,
							 | 
						|
											name: 'file',
							 | 
						|
											filePath,
							 | 
						|
											formData: {
							 | 
						|
												key,
							 | 
						|
												policy: OSSConfig.policyBase64,
							 | 
						|
												OSSAccessKeyId: OSSConfig.accessid,
							 | 
						|
												success_action_status: '200',
							 | 
						|
												signature: OSSConfig.signature,
							 | 
						|
											},
							 | 
						|
											success(res) {
							 | 
						|
												if (res.errMsg.includes("uploadFile:ok")) {
							 | 
						|
													resolve(ossConfig.aliOss.url + key)
							 | 
						|
												} else {
							 | 
						|
													reject(res)
							 | 
						|
												}
							 | 
						|
											},
							 | 
						|
											fail(err) {
							 | 
						|
												reject(err)
							 | 
						|
											}
							 | 
						|
										}
							 | 
						|
										uni.uploadFile(config)
							 | 
						|
									})
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								/**
							 | 
						|
								 * 阿里云OSS上传图片
							 | 
						|
								 * @param {compressed, key, folder, success, fail} compressed: 是否压缩 key: 存储桶中的目标文件名 folder: 存储桶中的目标文件夹
							 | 
						|
								 */
							 | 
						|
								export function ossUploadImage({
							 | 
						|
									key,
							 | 
						|
									folder,
							 | 
						|
									compressed = true, //是否压缩
							 | 
						|
									success, //成功时的回调
							 | 
						|
									fail //失败时的回调
							 | 
						|
								}) {
							 | 
						|
									const sizeType = [compressed ? 'compressed' : 'original']
							 | 
						|
									uni.chooseImage({
							 | 
						|
										count: 1,
							 | 
						|
										sizeType,
							 | 
						|
										success(res) {
							 | 
						|
											ossUpload(res.tempFilePaths[0], key, folder).then(success).catch(fail)
							 | 
						|
										},
							 | 
						|
										fail
							 | 
						|
									})
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								/**
							 | 
						|
								 * 阿里云OSS上传视频
							 | 
						|
								 * @param { key, folder, sourceType, compressed, maxDuration, camera, success, fail} 
							 | 
						|
								 * key: 存储桶中的目标文件名 folder: 存储桶中的目标文件夹 其它参数同uni.chooseVideo(mpWeixin) 
							 | 
						|
								 */
							 | 
						|
								export function ossUploadVideo({
							 | 
						|
									key,
							 | 
						|
									folder,
							 | 
						|
									sourceType = ['album', 'camera'], //album 从相册选视频, camera 使用相机拍摄
							 | 
						|
									compressed = true, //是否压缩所选的视频源文件
							 | 
						|
									maxDuration = 60, //拍摄视频最长拍摄时间, 单位秒。最长支持 60 秒
							 | 
						|
									camera = 'back', //调用相机方向, 'front'、'back', 默认'back'
							 | 
						|
									success, //成功时的回调
							 | 
						|
									fail //失败时的回调
							 | 
						|
								}) {
							 | 
						|
									uni.chooseVideo({
							 | 
						|
										sourceType,
							 | 
						|
										compressed,
							 | 
						|
										maxDuration,
							 | 
						|
										camera,
							 | 
						|
										success(res) {
							 | 
						|
											ossUpload(res.tempFilePath, key, folder).then(success).catch(fail)
							 | 
						|
										},
							 | 
						|
										fail
							 | 
						|
									})
							 | 
						|
								}
							 | 
						|
								const OSS = {
							 | 
						|
									ossUploadVideo,
							 | 
						|
									ossUploadImage,
							 | 
						|
									ossUpload
							 | 
						|
								}
							 | 
						|
								export default OSS;
							 |