mirror of
https://github.com/ragestudio/comty.git
synced 2025-06-09 10:34:17 +00:00
59 lines
1.0 KiB
JavaScript
59 lines
1.0 KiB
JavaScript
import fs from "node:fs"
|
|
import path from "node:path"
|
|
import pMap from "p-map"
|
|
|
|
export default async function putObject({
|
|
filePath,
|
|
uploadPath,
|
|
metadata = {},
|
|
targetFilename,
|
|
onFinish,
|
|
}) {
|
|
const isDirectory = await fs.promises
|
|
.lstat(filePath)
|
|
.then((stats) => stats.isDirectory())
|
|
|
|
if (isDirectory) {
|
|
let files = await fs.promises.readdir(filePath)
|
|
|
|
files = files.map((file) => {
|
|
const newPath = path.join(filePath, file)
|
|
|
|
return {
|
|
filePath: newPath,
|
|
uploadPath: path.join(uploadPath, file),
|
|
}
|
|
})
|
|
|
|
await pMap(files, putObject, {
|
|
concurrency: 3,
|
|
})
|
|
|
|
return {
|
|
id: uploadPath,
|
|
url: global.storage.composeRemoteURL(uploadPath, targetFilename),
|
|
metadata: metadata,
|
|
}
|
|
}
|
|
|
|
// upload to storage
|
|
await global.storage.fPutObject(
|
|
process.env.S3_BUCKET,
|
|
uploadPath,
|
|
filePath,
|
|
metadata,
|
|
)
|
|
|
|
const result = {
|
|
id: uploadPath,
|
|
url: global.storage.composeRemoteURL(uploadPath),
|
|
metadata: metadata,
|
|
}
|
|
|
|
if (typeof onFinish === "function") {
|
|
await onFinish(result)
|
|
}
|
|
|
|
return result
|
|
}
|