파일첨부할때 content-Disposition, File클래스, Resource 클래스

Web Development assistant·2022년 4월 10일
1

# spring

목록 보기
21/32

@GetMapping(value="/download", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
@ResponseBody
public ResponseEntity<Resource> downloadFile(String fileName){
	HttpHeaders headers = new HttpHeaders();
	try{
		headers.add("content-Disposition", "attachment; 	filename=new String(resourceName.getBytes("UTF-8"),"ISO-8859-	1"));	//아래의 3번째 방법
	}catch(UnsupportEncodingException e){
		e.printStackTrace();
	}
	return new ResponseEntity<Resource>(resource, headers, Https.OK);
}

https://developer.mozilla.org/ko/docs/Web/HTTP/Headers/Content-Disposition

Content-Disposition: inline
Content-Disposition: attachment
Content-Disposition: attachment; filename="filename.jpg"

disposition을 inline으로 설정했을땐,
header.add("Content-Type", Files.probeContentType(file.toPath())); 와 같이 이미지를 보여주기만 했다.

attachment를 하였을땐 파일명을 download로하여 보여주었고

headers.add("content-Disposition", "attachment; filename=new String(resourceName.getBytes("UTF-8"),"ISO-8859- 1"));을 하였을때 파일명을 보여주었다.
3번째 방법이 가장 이상적인듯.

또, File클래스는 리턴시 byte[] 타입으로 변환하여
Files.copyToByteArray(file)로 리턴,
Resource는
Resource resource = new FileSystemResource("c:\upload\" + fileName); 으로 객체를 만들고, 바로 리턴.

File과 Resource 클래스의 목적은 자바 언어를 통해 저장장치에 존재하는 파일을 읽어오는것.
차이점은 지금 당장의 검색으로는 찾지 못하여 개인적으로 공부해야겠다.

https://docs.spring.io/spring-framework/docs/3.2.x/spring-framework-reference/html/resources.html

0개의 댓글