tachybase_todo/packages/plugin-file-manager/src/storages/ali-oss.ts
2021-03-28 13:34:51 +08:00

43 lines
1.0 KiB
TypeScript

import AliOss from 'ali-oss';
import { getFilename } from '../utils';
export class AliOssStorage {
private client: AliOss;
private getFilename: Function;
constructor(opts) {
this.client = new AliOss(opts.config);
this.getFilename = opts.filename || getFilename;
}
_handleFile(req, file, cb) {
if (!this.client) {
console.error('oss client undefined');
return cb({ message: 'oss client undefined' });
}
this.getFilename(req, file, (err, filename) => {
if (err) return cb(err)
this.client.putStream(filename, file.stream).then(
result => cb(null, {
filename: result.name,
url: result.url
})
).catch(cb);
});
}
_removeFile(req, file, cb) {
if (!this.client) {
console.error('oss client undefined');
return cb({ message: 'oss client undefined' });
}
this.client.delete(file.filename).then(
result => cb(null, result)
).catch(cb);
}
}
export default (storage) => new AliOssStorage({ config: storage.options });