BoardController μμ λ©μλ
@GetMapping("/attach/{postId}")
public ResponseEntity<Resource> downloadAttach(@PathVariable Integer postId) throws MalformedURLException {
Board post = boardService.findById(postId); //postλ₯Ό μ κ·Όν μ μλ μ¬μ©μλ§ μ¬μ§ λ€μ΄λ‘λ κ°λ₯
String imageFilename = post.getFilename(); //μ¬μ©μκ° μ
λ‘λν νμΌ μ΄λ¦
String imageFilepath = post.getFilepath(); //DBμ μ μ₯νλ νμΌ κ²½λ‘
UrlResource resource = new UrlResource("file:" + fileStore.getFullPath(imageFilepath));
String encodedUploadFileName = UriUtils.encode(imageFilename, StandardCharsets.UTF_8); // νκΈ, νΉμλ¬Έμκ° κΉ¨μ§λ κ²μ λ°©μ§
String contentDisposition = "attachment; filename=\"" + encodedUploadFileName + "\"";
return ResponseEntity.ok()
.header(HttpHeaders.CONTENT_DISPOSITION, contentDisposition)
.body(resource);
}
downloadAttachλ νμΌμ λ€μ΄λ‘λ ν λ μ€νλλ λ©μλμ΄λ€.
νμΌ λ€μ΄λ‘λ μ κΆν 체ν¬κ°μ 볡μ‘ν μν©κΉμ§ κ°μ ν΄μ μ΄λ―Έμ§μ id
λ₯Ό μμ²νλλ‘ νλ€.
λν, νμΌ λ€μ΄λ‘λμμλ μ¬μ©μκ° μ
λ‘λν νμΌ μ΄λ¦μΌλ‘ λ€μ΄λ‘λ νλ κ²μ΄ μ’κΈ°μ Content-Disposition
ν€λμ attachment; filename="μ
λ‘λ νμΌλͺ
"
κ°μ 쀬λ€.
boardDetail.html μ€ νμΌ κ΄λ ¨ html
<span th:if="${post.filepath != null}">
<img th:src="@{'/images/' + ${post.filepath}}" width="300" height="300"/><br>
<!-- νμΌ λ€μ΄λ‘λ -->
μ¬μ§ λ€μ΄λ‘λ: <a th:href="|/attach/${post.id}|" th:text="${post.getFilename()}"/>
</span>
κ°λ¨ν νμΌ λ€μ΄λ‘λ htmlμ΄λ€. th:textλ₯Ό μ΄μ©ν΄ μ¬μ©μκ° μ λ‘λν νμΌμ μ΄λ¦μ μ¬μ©νλ€.
νμΌ λ€μ΄λ‘λ κΈ°λ₯ ꡬνμ λλ¬λ€. μλμ΄ μ λλμ§ νμΈν΄λ³΄μ.
μ΄μ μ μμ±ν΄μ€ κ²μκΈμ΄λ€. λ°μ μλ μ¬μ§ λ€μ΄λ‘λμ λ§ν¬λ₯Ό ν΄λ¦νμλ μ¬μ§μ΄ λ€μ΄λ‘λ λλ€λ©΄ μ±κ³΅μ΄λ€.
λ€νν κΈ°λ₯μ΄ μ μλνλ€.
μ¬μ ν λΆμ‘±ν μ μ΄ λ§λ€.
μ λ‘λν νμΌμ μμ νκ² λ§λ€κ³ μΆλ€.
첨λΆνμΌ μ λ‘λ, λ€μ΄λ‘λ
λ±λ± νμΌ μ
λ‘λ λΆλΆμ μ μΈνκ³ λ€λ₯Έ λΆλΆμμλ μμ ν΄μΌ ν λΆλΆμ΄ λ§λ€.
μμΌλ‘λ κΉμνλμ Spring MVC2 κ°μλ₯Ό 보면μ λ‘κ·ΈμΈ κΈ°λ₯, μΈμ
, μΏ ν€ λ±μ 곡λΆνκ³ λμ κ²μνμ μΆκ°νλ©΄μ 곡λΆν μμ μ΄λ€. λν, μμΌλ‘λ κΎΈμ€ν μ΄μ μ μ½λλ€μ κ°μ μν¬ κ²μ΄λ€.
κ°μΈμ μΌλ‘ μ‘΄κ²½νλ κ°λ°μμ΄μ κΉμνλμ΄ κ°μλ₯Ό λ€μ λ 3κ°μ§λ₯Ό νλ©΄ μ€λ ₯ ν₯μμ ν° λμμ΄ λλ€κ³ νμ ¨λ€.
1. κ°μλ₯Ό 보며 λ°λΌμΉκΈ°
2. κ°μ λ΄μ© μ 리νκΈ°
3. ν μ΄ νλ‘μ νΈλ₯Ό νλ©° μ μ©νκΈ°
μ²μμλ κ°μλ₯Ό 보며 λ°λΌμΉκΈ°λ§ νμ§λ§ λ€μ νλνλ 볡μ΅μ νλ©΄μ κ°μ λ΄μ© μ 리λ₯Ό νκ³ νλ‘μ νΈμ μ μ©λ μμΌλ³΄κ³ μλ€. μ€μ λ‘ μ΄ν΄μ ν° λμμ΄ λλ κ² κ°λ€. ν° λμμ΄ λκ³ μμ΅λλ€ μνλ!
κΈμμ λΆμ‘±ν λΆλΆμ΄ λ§μ κ² κ°μ΅λλ€. λͺ¨λ μ§μ μ νμν©λλ€!!
λ μμΈν μ½λλ κΉνλΈλ₯Ό μ°Έκ³ ν΄μ£ΌμΈμ!
κΉνλΈ: https://github.com/pp8817/ToyProjectBoard