반응형
질문
이미지 처리를 위해 웹 서비스를 사용합니다. Postman에서 잘 작동합니다:
이제 Dart에서 flutter를 사용하여 http 요청을 만들고 싶습니다:
import 'package:http/http.dart' as http;
static ocr(File image) async {
var url = '${API_URL}ocr';
var bytes = image.readAsBytesSync();
var response = await http.post(
url,
headers:{ "Content-Type":"multipart/form-data" } ,
body: { "lang":"fas" , "image":bytes},
encoding: Encoding.getByName("utf-8")
);
return response.body;
}
그러나 이미지 파일을 업로드하는 방법을 모르겠습니다. 위의 코드에서 예외가 발생합니다: Bad state: Cannot set the body fields of a Request with content-type "multipart/form-data".
요청의 본문을 어떻게 작성해야 할까요?
답변
귀하의 해결책은 작동할 것입니다. 많은 서버는 application/x-www-form-urlencoded를 대체로 허용합니다. (데이터가 중간적으로 비효율적으로 인코딩됩니다).
하지만, 이를 수행하기 위해 dart:http를 사용할 수 있습니다. http.post
대신 http.MultipartFile
객체를 사용해야 합니다.
dart 문서에서:
var request = new http.MultipartRequest("POST", url);
request.fields['user'] = 'someone@somewhere.com';
request.files.add(http.MultipartFile.fromPath(
'package',
'build/package.tar.gz',
contentType: new MediaType('application', 'x-tar'),
));
request.send().then((response) {
if (response.statusCode == 200) print("Uploaded!");
});
반응형
댓글