// 此方法适用于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) }) }) }