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