This commit is contained in:
lunaticbum
2024-10-08 14:43:49 +09:00
parent c5de7a3548
commit 9e4597890b
3 changed files with 97 additions and 43 deletions
@@ -2,10 +2,16 @@ package kr.lunaticbum.back.lun.controllers
import jakarta.servlet.http.HttpServletRequest
import jakarta.servlet.http.HttpServletResponse
import kr.lunaticbum.back.lun.model.FileSaveResult
import kr.lunaticbum.back.lun.model.ResponceResult
import kr.lunaticbum.back.lun.utils.LogService
import kr.lunaticbum.back.lun.utils.getFileExtension
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.beans.factory.annotation.Value
import org.springframework.core.io.Resource
import org.springframework.core.io.UrlResource
import org.springframework.http.MediaType
import org.springframework.http.ResponseEntity
import org.springframework.web.bind.annotation.*
import org.springframework.web.multipart.MultipartFile
import org.springframework.web.servlet.ModelAndView
@@ -40,47 +46,63 @@ class BlogController() {
private val resourceHandler: String? = null
@ResponseBody
@GetMapping("/post/images/{fileName}")
fun getImage(@PathVariable fileName : String) : Resource {
val imgUploadPath = ("file:" +uploadPath + File.separator + fileName)
return UrlResource.from(imgUploadPath)
}
@PostMapping("/post/imageUpload")
fun postImage(@RequestPart("file") upload: MultipartFile, res: HttpServletResponse, req: HttpServletRequest) {
fun postImage(@RequestPart("file") upload: MultipartFile, res: HttpServletResponse, req: HttpServletRequest) : ResponseEntity<FileSaveResult> {
var lResultCode = 0
var lResultMsg = "Suscces"
var out: OutputStream? = null
var printWriter: PrintWriter? = null
var targetFile : File? = null
logService.log("imgUploadPath ${upload.originalFilename}")
res.characterEncoding = "utf-8"
res.contentType = "text/html;charset=utf-8"
var uuid = UUID.randomUUID()
val extension: String = getFileExtension(upload.originalFilename) ?: ""
try {
val uuid = UUID.randomUUID()
logService.log("imgUploadPath ${uuid.toString()}")
val extension: String = getFileExtension(upload.originalFilename) ?: ""
logService.log("imgUploadPath ${uuid.toString()}")
val bytes = upload.bytes
var f = File(uploadPath)
// logService.log("imgUploadPath ${f.parentFile.parentFile.parentFile.parentFile.absoluteFile}")
// logService.log("imgUploadPath ${f.parentFile.parentFile.parentFile.absoluteFile}")
// logService.log("imgUploadPath ${f.parentFile.parentFile.absoluteFile}")
// logService.log("imgUploadPath ${f.parentFile.absoluteFile}")
logService.log("imgUploadPath ${f.exists()}")
logService.log("imgUploadPath ${f.absolutePath}")
if (f.exists() == false) f.mkdirs()
// 실제 이미지 저장 경로
val imgUploadPath = (uploadPath + File.separator + uuid).toString() + "." + extension
logService.log("imgUploadPath $imgUploadPath")
File(imgUploadPath).parentFile.mkdirs()
targetFile = File(imgUploadPath)
if(targetFile.parentFile.exists() == false)targetFile.parentFile.mkdirs()
// 이미지 저장
out = FileOutputStream(imgUploadPath)
out.write(bytes)
out.flush()
// ckEditor 로 전송
printWriter = res.writer
val callback = req.getParameter("CKEditorFuncNum")
val fileUrl = "/blog/post/image/$uuid.$extension"
// printWriter = res.writer
// val callback = req.getParameter("CKEditorFuncNum")
// val fileUrl = "/blog/post/image/$uuid.$extension"
printWriter.println(
("<script type='text/javascript'>"
+ "window.parent.CKEDITOR.tools.callFunction("
+ callback + ",'" + fileUrl + "','이미지를 업로드하였습니다.')"
+ "</script>")
)
printWriter.flush()
// printWriter.println(
// ("<script type='text/javascript'>"
// + "window.parent.CKEDITOR.tools.callFunction("
// + callback + ",'" + fileUrl + "','이미지를 업로드하였습니다.')"
// + "</script>")
// )
//
// printWriter.flush()
logService.log("imgUploadPath $imgUploadPath")
logService.log("imgUploadPath ${File(imgUploadPath).exists()}")
} catch (e: IOException) {
@@ -88,11 +110,17 @@ class BlogController() {
} finally {
try {
out?.close()
printWriter?.close()
} catch (e: IOException) {
e.printStackTrace()
}
}
val responce = ResponseEntity.ok().contentType(MediaType.APPLICATION_JSON).body(FileSaveResult().apply {
this.resultCode = lResultCode
this.resultMsg = lResultMsg
this.fileName = "$uuid.$extension"
})
return responce
}
}
@@ -4,7 +4,12 @@ import lombok.Getter
@Getter
class ResponceResult {
open class ResponceResult {
var resultCode: Int = 0
var resultMsg: String? = null
}
@Getter
class FileSaveResult : ResponceResult() {
var fileName : String? = null
}