campose-api / src /utils /downloadFileToTmp.mts
jbilcke-hf's picture
jbilcke-hf HF staff
initial commit
5b3c62d
raw
history blame
666 Bytes
import path from "node:path"
import fs from "node:fs"
import tmpDir from "temp-dir"
export const downloadFileToTmp = async (remoteUrl: string, fileName: string) => {
const filePath = path.resolve(tmpDir, fileName)
const controller = new AbortController()
const timeoutId = setTimeout(() => controller.abort(), 15 * 60 * 60 * 1000) // 15 minutes
// TODO finish the timeout?
// download the file
const response = await fetch(remoteUrl, {
signal: controller.signal
})
// write it to the disk
const arrayBuffer = await response.arrayBuffer()
await fs.promises.writeFile(
filePath,
Buffer.from(arrayBuffer)
)
return filePath
}