Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 컬렉션프레임워크
- 데이터내보내기
- JPQL
- 도커이미지
- gtihub
- analytics4
- docker
- 오블완
- spring
- java
- 애널리틱스4
- 르세라핌
- git branch 삭제
- bigquery
- db종류
- ANTIFRAGILE
- 티스토리챌린지
- 명령어
- docker 명령어
- codeium
- datagrip
- 11월순위
- Python
- ci/cd
- DBMS
- IntelliJ
- JPA
- git pat
- pat발급
Archives
- Today
- Total
hanker
Spring - local image 가져오기 본문
반응형
- 이미지 파일은 각 날짜에 맞는 폴더에 저장
- 파일은 시간에 영향을 받아 저장( 파일명 - ex) 20210420_171013.050821_A.png )
- 특정시간에 생성된 이미지 파일 불러오기
<폴더 내 Image파일>
(파일명을 알 경우)
@RestController
public class ImageController {
@GetMapping(value="/image/view", produces= MediaType.IMAGE_PNG_VALUE)
public @ResponseBody byte[] getImage(@RequestParam("file_time") String fileTime, // yyyymmdd_HHmmssZ
@RequestParam("value") String value) // A
throws IOException{
FileInputStream fis = null;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
String[] fileAr = fileTime.split("_");
String filePath = fileAr[0];
String fileDir = "D:\\Han\\sample\\" + filePath + "\\" + fileTime + "_" + value + ".png"; // 파일경로
try{
fis = new FileInputStream(fileDir);
} catch(FileNotFoundException e){
e.printStackTrace();
}
int readCount = 0;
byte[] buffer = new byte[1024];
byte[] fileArray = null;
try{
while((readCount = fis.read(buffer)) != -1){
baos.write(buffer, 0, readCount);
}
fileArray = baos.toByteArray();
fis.close();
baos.close();
} catch(IOException e){
throw new RuntimeException("File Error");
}
return fileArray;
}
}
(파일명을 모르지만 특정시간을 입력해서 이미지를 얻고 싶을 때)
@RestController
public class ImageController {
@GetMapping(value="/image/specView", produces=MediaType.IMAGE_PNG_VALUE)
public @ResponseBody byte[] getSpecImage(@RequestParam("specific_date") String specDt, // yyyymmdd_HHmm (특정시간입력 s, ms까지는 모름)
@RequestParam("value") String value) // A or B
throws IOException{
FileInputStream fis = null;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
String[] fileAr = specDt.split("_");
String filePath = fileAr[0];
String tmpFile = fileAr[1].substring(0, 4); // HHmm
String path = "D:\\Han\\sample\\" + filePath;
// path 경로에서 "filePath_tmpFile"명과 일치하는 파일 찾기
File directory = new File(path);
FilenameFilter filter = new FilenameFilter(){
public boolean accept(File f, String name){
return name.startsWith(filePath + "_" + tmpFile);
}
};
String[] sameFile = directory.listFiles(filter)[directory.listFiles(filter).length - 1].toString().split(("/".equals(File.separator))? File.separator : "\\\\");
String fileName = sameFile[sameFile.length-1];
String fileDir = "D:\\han\\sample\\" + filePath + "\\" + fileName;
try{
fis = new FileInputStream(fileDir);
} catch(FileNotFoundException e){
e.printStackTrace();
}
int readCount = 0;
byte[] buffer = new byte[1024];
byte[] fileArray = null;
try{
while((readCount = fis.read(buffer)) != -1){
baos.write(buffer, 0, readCount);
}
fileArray = baos.toByteArray();
fis.close();
baos.close();
} catch(IOException e){
throw new RuntimeException("File Error");
}
return fileArray;
}
}
- 선택한 특정 분에 제일 마지막 값이 들어옴 ex) 20210329-151059.999999_A.png
- 더 detail한 설정이 필요하다면 초까지 설정
전체 코드
반응형
'SPRING' 카테고리의 다른 글
Spring - Thymeleaf 경로 설정 (templates) (0) | 2021.04.27 |
---|---|
Spring boot - Log 사용 (0) | 2021.04.26 |
spring boot(java) - 스케쥴러(scheduler) 작업 중지시키기 (2) - quartz (1) | 2021.04.12 |
spring boot(java) - 스케쥴러(Scheduler) 만들기 (1) - quartz (0) | 2021.04.11 |
ApexCharts stepline(계단식 차트) 그리기 (0) | 2021.04.02 |