feat: cad파일 컨버터 추가
This commit is contained in:
parent
9a9fa522f9
commit
11edbe1988
70
src/app/api/image/cad/route.js
Normal file
70
src/app/api/image/cad/route.js
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
import { NextResponse } from 'next/server'
|
||||||
|
import { S3Client, PutObjectCommand, DeleteObjectCommand } from '@aws-sdk/client-s3'
|
||||||
|
|
||||||
|
const Bucket = process.env.AMPLIFY_BUCKET
|
||||||
|
const s3 = new S3Client({
|
||||||
|
region: process.env.AWS_REGION,
|
||||||
|
credentials: {
|
||||||
|
accessKeyId: process.env.AWS_ACCESS_KEY_ID,
|
||||||
|
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
const uploadImage = async (file) => {
|
||||||
|
const Body = Buffer.from(await file.arrayBuffer())
|
||||||
|
const Key = `cads/${file.name}`
|
||||||
|
const ContentType = file.ContentType
|
||||||
|
|
||||||
|
await s3.send(
|
||||||
|
new PutObjectCommand({
|
||||||
|
Bucket,
|
||||||
|
Key,
|
||||||
|
Body,
|
||||||
|
ContentType,
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
|
||||||
|
return {
|
||||||
|
filePath: `https://${process.env.AMPLIFY_BUCKET}.s3.${process.env.AWS_REGION}.amazonaws.com/${Key}`,
|
||||||
|
fileName: Key,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function POST(req) {
|
||||||
|
try {
|
||||||
|
const formData = await req.formData()
|
||||||
|
const file = formData.get('file')
|
||||||
|
|
||||||
|
const result = await uploadImage(file)
|
||||||
|
result.message = '이미지 업로드 성공'
|
||||||
|
|
||||||
|
return NextResponse.json(result)
|
||||||
|
} catch (error) {
|
||||||
|
console.error(error)
|
||||||
|
return NextResponse.json({ error: 'Failed to upload image' }, { status: 500 })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function DELETE(req) {
|
||||||
|
try {
|
||||||
|
const searchParams = req.nextUrl.searchParams
|
||||||
|
const Key = `cads/${searchParams.get('fileName')}`
|
||||||
|
console.log('🚀 ~ DELETE ~ Key:', Key)
|
||||||
|
|
||||||
|
if (!Key) {
|
||||||
|
return NextResponse.json({ error: 'fileName parameter is required' }, { status: 400 })
|
||||||
|
}
|
||||||
|
|
||||||
|
await s3.send(
|
||||||
|
new DeleteObjectCommand({
|
||||||
|
Bucket,
|
||||||
|
Key,
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
|
||||||
|
return NextResponse.json({ message: '이미지 삭제 성공' }, { status: 200 })
|
||||||
|
} catch (error) {
|
||||||
|
console.error('S3 Delete Error:', error)
|
||||||
|
return NextResponse.json({ error: 'Failed to delete image' }, { status: 500 })
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -87,8 +87,9 @@ export function useRefFiles() {
|
|||||||
console.log('🚀 ~ handleFileDelete ~ handleFileDelete:', refImage)
|
console.log('🚀 ~ handleFileDelete ~ handleFileDelete:', refImage)
|
||||||
console.log('🚀 ~ handleFileDelete ~ currentCanvasPlan.bgImageName:', currentCanvasPlan.bgImageName)
|
console.log('🚀 ~ handleFileDelete ~ currentCanvasPlan.bgImageName:', currentCanvasPlan.bgImageName)
|
||||||
await del({ url: `http://localhost:3000/api/image/upload?fileName=${currentCanvasPlan.bgImageName}` })
|
await del({ url: `http://localhost:3000/api/image/upload?fileName=${currentCanvasPlan.bgImageName}` })
|
||||||
setRefImage(null)
|
// setRefImage(null)
|
||||||
setCurrentCanvasPlan((prev) => ({ ...prev, bgImageName: null }))
|
setCurrentBgImage(null)
|
||||||
|
// setCurrentCanvasPlan((prev) => ({ ...prev, bgImageName: null }))
|
||||||
await deleteBackGroundImage({
|
await deleteBackGroundImage({
|
||||||
objectId: currentCanvasPlan.id,
|
objectId: currentCanvasPlan.id,
|
||||||
planNo: currentCanvasPlan.planNo,
|
planNo: currentCanvasPlan.planNo,
|
||||||
@ -110,7 +111,7 @@ export function useRefFiles() {
|
|||||||
await del({ url: `http://localhost:3000/api/image/map?fileName=${currentCanvasPlan.bgImageName}` })
|
await del({ url: `http://localhost:3000/api/image/map?fileName=${currentCanvasPlan.bgImageName}` })
|
||||||
setMapPositionAddress('')
|
setMapPositionAddress('')
|
||||||
setCurrentBgImage(null)
|
setCurrentBgImage(null)
|
||||||
setCurrentCanvasPlan((prev) => ({ ...prev, mapPositionAddress: null }))
|
// setCurrentCanvasPlan((prev) => ({ ...prev, mapPositionAddress: null }))
|
||||||
await deleteBackGroundImage({
|
await deleteBackGroundImage({
|
||||||
objectId: currentCanvasPlan.id,
|
objectId: currentCanvasPlan.id,
|
||||||
planNo: currentCanvasPlan.planNo,
|
planNo: currentCanvasPlan.planNo,
|
||||||
@ -173,6 +174,7 @@ export function useRefFiles() {
|
|||||||
mapPositionAddress: queryRef.current.value,
|
mapPositionAddress: queryRef.current.value,
|
||||||
}))
|
}))
|
||||||
} else {
|
} else {
|
||||||
|
setRefImage(null)
|
||||||
setCurrentCanvasPlan((prev) => ({
|
setCurrentCanvasPlan((prev) => ({
|
||||||
...prev,
|
...prev,
|
||||||
bgImageName: null,
|
bgImageName: null,
|
||||||
@ -230,15 +232,38 @@ export function useRefFiles() {
|
|||||||
const formData = new FormData()
|
const formData = new FormData()
|
||||||
formData.append('file', file)
|
formData.append('file', file)
|
||||||
|
|
||||||
|
/** 캐드 도면 파일 변환 */
|
||||||
const res = await post({ url: converterUrl, data: formData })
|
const res = await post({ url: converterUrl, data: formData })
|
||||||
console.log('🚀 ~ handleUploadConvertRefFile ~ res:', res)
|
console.log('🚀 ~ handleUploadConvertRefFile ~ res:', res)
|
||||||
|
|
||||||
|
/** 캐드 도면 파일 업로드 */
|
||||||
const result = await post({
|
const result = await post({
|
||||||
url: `${process.env.NEXT_PUBLIC_HOST_URL}/cad/convert`,
|
url: `http://localhost:3000/api/image/cad`,
|
||||||
data: res,
|
data: res,
|
||||||
})
|
})
|
||||||
console.log('🚀 ~ handleUploadConvertRefFile ~ result:', result)
|
console.log('🚀 ~ handleUploadConvertRefFile ~ result:', result)
|
||||||
setCurrentBgImage(`${process.env.NEXT_PUBLIC_HOST_URL}${result.filePath}`)
|
|
||||||
setRefImage(res.Files[0].FileData)
|
setCurrentBgImage(`${result.filePath}`)
|
||||||
|
setRefImage(file)
|
||||||
|
|
||||||
|
const params = {
|
||||||
|
objectId: currentCanvasPlan.id,
|
||||||
|
planNo: currentCanvasPlan.planNo,
|
||||||
|
// imagePath: `${process.env.NEXT_PUBLIC_HOST_URL}${res.filePath}`,
|
||||||
|
imagePath: `${result.filePath}`,
|
||||||
|
}
|
||||||
|
console.log('🚀 ~ handleUploadImageRefFile ~ params:', params)
|
||||||
|
await setBackGroundImage(params)
|
||||||
|
|
||||||
|
// const res = await post({ url: converterUrl, data: formData })
|
||||||
|
// console.log('🚀 ~ handleUploadConvertRefFile ~ res:', res)
|
||||||
|
// const result = await post({
|
||||||
|
// url: `${process.env.NEXT_PUBLIC_HOST_URL}/cad/convert`,
|
||||||
|
// data: res,
|
||||||
|
// })
|
||||||
|
// console.log('🚀 ~ handleUploadConvertRefFile ~ result:', result)
|
||||||
|
// setCurrentBgImage(`${process.env.NEXT_PUBLIC_HOST_URL}${result.filePath}`)
|
||||||
|
// setRefImage(res.Files[0].FileData)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user