// 此方法适用于web
import OSS from "ali-oss"
import config 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('-')
}


export function uploadFileToOSS(file) {
	
	uni.showLoading({
	    title: '上传中...'
	});
	
	return new Promise((resolve,reject) => {
		// 创建OSS实例
		const client = new OSS(config.aliOss.config);
		
		// 设置文件名和文件目录
		const suffix = '.' + file.name.split('.').pop();
		let key = storeFolder()
		if(key[key.length - 1] != '/') key += '/'
		const fileName = key + storeKey() + suffix; // 注意：文件名需要是唯一的  
		
		// 使用put接口上传文件  
		client.multipartUpload(fileName, file, {
			headers: {
			  'Content-Disposition': 'inline',
			  'Content-Type': file.type
			}
		}).then(res => {
			uni.hideLoading();
			resolve(config.aliOss.url + res.name);
		}).catch(err => {
			uni.hideLoading();
			reject(err)
		})
	})
}