본문 바로가기

Web/Flutter

[Flutter] http 이용해서 이미지 파일 post로 보내기

개발 환경

- 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를 통해 특정 타입만 처리하도록 정해서 이상한 타입의 파일은 거르도록 처리합니다.

 

 

위는 예시적으로 짠 코드라 이해하시기 불편할 수도 있습니다. 많은 이해 부탁드려요 ㅎㅎ 

반응형