md/src/api/file.js

78 lines
2.1 KiB
JavaScript
Raw Normal View History

2020-05-01 21:30:25 +08:00
import fetch from './fetch';
2020-09-07 23:06:43 +08:00
import store from '../store/index';
2020-08-31 20:48:22 +08:00
import {
v4 as uuidv4
} from 'uuid';
function fileUpload(content, filename) {
2020-09-12 16:53:52 +08:00
const fileUploadType = store.state.imgHost;
const activeKey = fileUploadType !== 'default' && localStorage.getItem(`${fileUploadType}Config`)
? fileUploadType : 'default';
switch (activeKey) {
case 'aliOSS':
return aliOSSUploadFile(content, filename);
case 'default':
return githubUploadFile(content, filename);
case 'github':
return githubUploadFile(content, filename);
default:
break;
}
}
/**
* github 图片上传
* @param {*} content
* @param {*} filename
*/
function githubUploadFile(content, filename) {
const githubResourceUrl = 'raw.githubusercontent.com/filess/images/master/';
const cdnResourceUrl = 'cdn.jsdelivr.net/gh/filess/images/';
2020-09-07 23:06:43 +08:00
const {
method,
2020-09-12 16:53:52 +08:00
headers,
2020-09-07 23:06:43 +08:00
url
} = store.getters['imageApi/config'];
2020-09-12 16:53:52 +08:00
const dateFilename = new Date().getTime() + '-' + uuidv4() + '.' + filename.split('.')[1];
2020-09-07 23:06:43 +08:00
const uploadUrl = url + dateFilename;
2020-05-01 21:30:25 +08:00
return fetch({
2020-09-07 23:06:43 +08:00
url: uploadUrl,
method,
2020-09-12 16:53:52 +08:00
headers,
2020-08-29 11:55:16 +08:00
data: {
2020-08-29 14:42:02 +08:00
message: 'Upload image by https://doocs.github.io/md',
2020-08-29 11:55:16 +08:00
content: content
}
2020-09-12 16:53:52 +08:00
}).then(res=> {
const imageUrl = res.content.download_url.replace(githubResourceUrl, cdnResourceUrl);
return imageUrl;
});
2020-05-01 21:30:25 +08:00
}
2020-09-12 16:53:52 +08:00
function aliOSSUploadFile(content, filename) {
debugger;
const config = store.getters['imageApi/config'];
const dateFilename = new Date().getTime() + '-' + uuidv4() + '.' + filename.split('.')[1];
const dir = config.dir + '/' + dateFilename;
const Buffer = require('buffer-from')
const buffer = Buffer(content, 'base64');
const OSS = require('ali-oss');
try {
const client = new OSS(config);
return client.put(dir, buffer).then(res=> {
console.log('aliOSSUoladFile', res);
return res.url;
})
} catch (e) {
return Promise.reject(e);
}
}
2020-05-01 21:30:25 +08:00
export default {
fileUpload
2020-08-31 20:48:22 +08:00
};