qcast-front/src/lib/fileAction.js
2024-12-06 13:31:18 +09:00

96 lines
2.1 KiB
JavaScript

'use server'
import fs from 'fs/promises'
const CAD_FILE_PATH = 'public/cad-images'
const IMAGE_FILE_PATH = 'public/plan-bg-images'
const FILE_PATH = 'public/plan-images'
/**
* 파일 변환 & 저장
* @param {*} fileName
* @param {*} data
* @returns
*/
const convertDwgToPng = async (fileName, data) => {
try {
await fs.readdir(CAD_FILE_PATH)
} catch {
await fs.mkdir(CAD_FILE_PATH)
}
return await fs.writeFile(`${CAD_FILE_PATH}/${fileName}`, data, 'base64')
}
/**
* 이미지 저장
* base64 형식으로 저장
* @param {*} title
* @param {*} data
* @returns
*/
const writeImageBase64 = async (title, data) => {
// 해당 경로에 Directory 가 없다면 생성
try {
await fs.readdir(IMAGE_FILE_PATH)
} catch {
await fs.mkdir(IMAGE_FILE_PATH)
}
return fs.writeFile(`${IMAGE_FILE_PATH}/${title}.png`, data, 'base64')
}
// /**
// * 이미지 저장
// * Buffer 형식으로 저장
// * @param {*} title
// * @param {*} data
// * @returns
// */
// const writeImageBuffer = async (file) => {
// // 해당 경로에 Directory 가 없다면 생성
// try {
// await fs.readdir(IMAGE_FILE_PATH)
// } catch {
// await fs.mkdir(IMAGE_FILE_PATH)
// }
//
// const arrayBuffer = await fileURLToPath.arrayBuffer()
// const buffer = new Uint8Array(arrayBuffer)
//
// return fs.writeFile(`${IMAGE_FILE_PATH}/${file.fileName}`, buffer)
// }
const writeImage = async (fileName, file) => {
try {
await fs.readdir(FILE_PATH)
} catch {
await fs.mkdir(FILE_PATH)
}
return fs.writeFile(`${FILE_PATH}/${fileName}.png`, file)
}
const readImage = async (fileName) => {
const file = await fs.readFile(`${FILE_PATH}/${fileName}`)
// .then((res) => {
// console.log('readImage-then', res)
// })
// .catch((e) => {
// console.log('readImage-catch', e)
// })
console.log('🚀 ~ readImage ~ file:', file)
return file
}
const removeImage = async (fileName) => {
try {
await fs.rm(`${FILE_PATH}/${fileName}.png`)
} catch (e) {
console.log(e)
}
}
export { convertDwgToPng, writeImageBase64, writeImage, readImage, removeImage }