Web/Flutter
[Flutter] http 이용해서 이미지 파일 post로 보내기
MarrRang
2020. 11. 25. 15:27
개발 환경
- Flutter
- Spring boot
- kotlin
방법
1. Dependency 추가
//pubspec.yaml
dependencies :
http: ^0.12.1 //버전은 아무거나
2. 이미지 저장 코드
//밑에 코드를 참고하셔서 더 좋은 코드를 짜서 사용해주세요
//imageFileList에 보내고 싶은 이미지 파일들을 넣어주세요
List<File> imageFileList = List<File>();
var request = new http.MultipartRequest("POST", Uri.parse(imageApiUrl));
request.fields['parameter'] = '보내고 싶은 파라미터';
request.fields['parameter2'] = '보내고 싶은 파라미터2';
for (var imageFile in imageFileList) {
request.files.add(await http.MultipartFile.fromPath('imageFileList', imageFile.path));
}
var response = await request.send();
request.files.add(요부분)은 밑에 코드로 대체할 수도 있습니다. 대신 파일을 읽어들일때 동기적으로 처리하지 않으면 이미지 파일이 읽어지기 전에 request를 보내서 파일이 보내지지 않을 수 있습니다. 이부분에서 한동안 애를 먹었네요.. 참고하셔요.
- http.MultipartFile('imageFileList', fileStream, imageFile.lengthSync());
- http.MultipartFile.fromBytes('imageFileList', imageFile.readAsBytesSync());
3. 서버단 컨트롤러 코드
@PostMapping("/list", consumes = [MediaType.IMAGE_JPEG_VALUE, MediaType.IMAGE_GIF_VALUE, MediaType.IMAGE_PNG_VALUE, MediaType.MULTIPART_FORM_DATA_VALUE])
fun imageProcedure(@RequestBody imageFileList: List<MultipartFile>, @RequestParam("parameter") parameter: String, @RequestParam("parameter2" parameter2: String): Boolean {
//코드...
}
서버쪽에서 받는 부분의 코드입니다. consumes를 통해 특정 타입만 처리하도록 정해서 이상한 타입의 파일은 거르도록 처리합니다.
위는 예시적으로 짠 코드라 이해하시기 불편할 수도 있습니다. 많은 이해 부탁드려요 ㅎㅎ
반응형