PicList/src/main/utils/aliYunUpload.js

69 lines
2.1 KiB
JavaScript
Raw Normal View History

2018-06-26 11:50:16 -04:00
import * as img2Base64 from './img2base64'
import db from '../../datastore/index'
import { Notification, clipboard } from 'electron'
import { Wrapper as OSS } from 'ali-oss'
let client
// generate OSS Options
const generateOSSOptions = () => {
const options = db.read().get('picBed.aliyun').value()
client = new OSS({
region: `${options.area}`,
accessKeyId: `${options.accessKeyId}`,
accessKeySecret: `${options.accessKeySecret}`,
bucket: `${options.bucket}`,
secure: true
})
return client
}
const aliYunUpload = async (img, type, webContents) => {
try {
webContents.send('uploadProgress', 0)
const imgList = await img2Base64[type](img)
webContents.send('uploadProgress', 30)
const aliYunOptions = db.read().get('picBed.aliyun').value()
const customUrl = aliYunOptions.customUrl
const path = aliYunOptions.path
const length = imgList.length
generateOSSOptions()
for (let i in imgList) {
let body = await client.put(`${path}${imgList[i].fileName}`, Buffer.from(imgList[i].base64Image, 'base64'))
if (body.res.status === 200) {
delete imgList[i].base64Image
if (customUrl) {
imgList[i]['imgUrl'] = `${customUrl}/${path}${imgList[i].fileName}`
} else {
imgList[i]['imgUrl'] = body.url
}
imgList[i]['type'] = 'aliyun'
if (i - length === -1) {
webContents.send('uploadProgress', 60)
}
} else {
webContents.send('uploadProgress', -1)
const notification = new Notification({
title: '上传失败!',
body: '上传失败!'
})
notification.show()
return false
}
}
webContents.send('uploadProgress', 100)
return imgList
} catch (err) {
webContents.send('uploadProgress', -1)
const notification = new Notification({
title: '上传失败!',
2018-07-06 12:31:53 -04:00
body: `请检查你的配置项是否正确`
2018-06-26 11:50:16 -04:00
})
notification.show()
clipboard.writeText('https://cloud.tencent.com/document/product/436/8432')
throw new Error(err)
}
}
export default aliYunUpload