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


}

1 답변

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)