mirror of
https://github.com/Ocelot-Social-Community/Ocelot-Social.git
synced 2025-12-13 07:46:06 +00:00
29 lines
870 B
JavaScript
29 lines
870 B
JavaScript
import { createWriteStream } from 'fs'
|
|
import path from 'path'
|
|
import slug from 'slug'
|
|
import uuid from 'uuid/v4'
|
|
|
|
const localFileUpload = async ({ createReadStream, uniqueFilename }) => {
|
|
await new Promise((resolve, reject) =>
|
|
createReadStream()
|
|
.pipe(createWriteStream(`public${uniqueFilename}`))
|
|
.on('finish', resolve)
|
|
.on('error', reject),
|
|
)
|
|
return uniqueFilename
|
|
}
|
|
|
|
export default async function fileUpload(params, { file, url }, uploadCallback = localFileUpload) {
|
|
const upload = params[file]
|
|
if (upload) {
|
|
const { createReadStream, filename } = await upload
|
|
const { name, ext } = path.parse(filename)
|
|
const uniqueFilename = `/uploads/${uuid()}-${slug(name)}${ext}`
|
|
const location = await uploadCallback({ createReadStream, uniqueFilename })
|
|
delete params[file]
|
|
params[url] = location
|
|
}
|
|
|
|
return params
|
|
}
|