qcast-front/src/lib/fileAction.js
2025-02-06 10:26:35 +09:00

88 lines
1.9 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(`${process.env.NEXT_PUBLIC_HOST_URL}${fileName}`)
return file
}
const removeImage = async (fileName) => {
try {
await fs.rm(`${FILE_PATH}/${fileName}.png`)
} catch (e) {
// Error handling without console.log
}
}
export { convertDwgToPng, writeImageBase64, writeImage, readImage, removeImage }