| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- import { S3Client, PutObjectCommand } from '@aws-sdk/client-s3'
- import { Upload } from '@aws-sdk/lib-storage'
- import { PassThrough, Readable } from 'stream'
- import { WritableStreamBuffer } from 'stream-buffers'
- import * as path from 'path'
- async function uploadDoc(title, content) {
- const s3 = new S3Client({
- region: 'oss-cn-hangzhou',
- endpoint: `https://oss-cn-hangzhou.aliyuncs.com`,
- credentials: {
- accessKeyId: 'PXzJyah5rZfWHIIH',
- secretAccessKey: 'e1MS6j0wypXJrw8CM0hObZu8qKbfah'
- }
- })
- const stream = new PassThrough()
- const key = `doc/${title}_${Date.now()}.docx`
- const upload = new Upload({
- client: s3,
- params: {
- ACL: 'public-read',
- Bucket: 'nebuai',
- Key: key,
- Body: stream
- }
- })
- const { execa } = await (eval('import("execa")') as Promise<typeof import('execa')>)
- const p = execa('pandoc', ['-f', 'markdown', '-t', 'docx'])
- Readable.from(content).pipe(p.stdin)
- const err = new WritableStreamBuffer()
- p.pipeStdout(stream)
- p.pipeStderr(err)
- try {
- await p
- } catch (error) {
- throw new Error(err.getContents().toString())
- }
- await upload.done()
- return `https://nebuai.oss-cn-hangzhou.aliyuncs.com/${key}`
- }
- // uploadDoc('test', '# test').then((res) => {
- // console.log(res)
- // })
- let paper = new WritableStreamBuffer()
- paper.write('test')
- console.log(paper.getContentsAsString('utf8'))
|