Spring boot 에서 Android로 이미지파일 여러장 전송
조회수 905회
지금 이미 Android에서 Server로 MultipartHttpServletRequest로 파일을 저장했습니다. 저는 이제 반대로 Server에서 Android로 이미지와 스트링을 다시 보내고싶습니다.
"response": [
{
"boardIdx": 29,
"title": "제목asdsad",
"contents": "내용asdsadsad",
"fileList": [
{
"idx": 25,
"boardIdx": 29,
"originalFileName": "IMG_20200211_144336.jpg",
"storedFilePath": "test/20200212/52368144018200.jpg",
"fileSize": 147780
},
{
"idx": 26,
"boardIdx": 29,
"originalFileName": "IMG_20200211_144340.jpg",
"storedFilePath": "test/20200212/52368144997800.jpg",
"fileSize": 150788
},
{
"idx": 27,
"boardIdx": 29,
"originalFileName": "IMG_20200210_061004.jpg",
"storedFilePath": "test/20200212/52368145901500.jpg",
"fileSize": 203023
},
{
"idx": 28,
"boardIdx": 29,
"originalFileName": "IMG_20200211_144318.jpg",
"storedFilePath": "test/20200212/52368146848600.jpg",
"fileSize": 133689
}
],
}
JSON으로 보면 이런식으로 각 게시물마다 파일이 여러개있습니다. 이 fileList안에다가 진짜 파일도 같이 넣어서 보내고 싶습니다.
그래서 Service 부분에서
public List<TestDto> testSelectUpload(HttpServletResponse response) throws Exception{
List<TestFileDto> testFileDtoList;
List<TestDto> testDtoList=mapper.testSelectUpload();
for(int i=0;i<testDtoList.size();i++){
//이부분은 해당 게시번호(boardIdx)에따라서 set해주는부분
testDtoList.get(i).setFileList(mapper.testSelectUploadFile(testDtoList.get(i).getBoardIdx()));
testFileDtoList=mapper.testSelectUploadFile(testDtoList.get(i).getBoardIdx());
//그리고 해당 파일 리스트만큼 돌려주기
for(int j=0lj<testFileDtoList.size();j++){
String fileName=testFileDtoList.get(j).getOriginalFileName();
byte[] files=FileUtils.readFileToByteArray(new File(testFileDtoList.get(j).getStoredFilePath()));
response.setContentType("application/octet-stream");
response.setContentLength(files.length);
response.setHeader("Content-Disposition", "attachment; fileName=\"" + URLEncoder.encode(fileName,"UTF-8")+"\";");
response.setHeader("Content_Transfer-Encoding", "binary");
response.getOutputStream().write(files);
response.getOutputStream().flush();
response.getOutputStream().close();
}
return testDtoList;
}
이런식으로 하고싶은데 계속오류가납니다 Response에다가 다 넣는 방법이 있을까요???
[참고]
데이터베이스 구조입니다.
test_board 테이블
test_file 테이블
TestDto.Java
@Data
public class TestDto{
private int boardIdx;
...
private List<TestFileDto> fileList;
}
TestFileDto.Java
@Data
public class TestFileDto{
private int idx;
...
private long fileSize
}
댓글 입력