#json #flutter #api #dart
Вопрос:
Я получаю изображение из своей галереи, теперь хочу использовать это изображение как в параметрах тела Http с помощью Multipart
запроса. Я не смог понять, что я должен передать для изображения в составном запросе.
Моя переменная image
содержит изображение моей галереи после вызова метода.
final ImagePicker _picker = ImagePicker();
File? image;
var fileContent;
var fileContentBase64;
Отображение изображения в моем приложении
Padding(
padding: const EdgeInsets.all(18.0),
child: image == null? Text("No file chosen"): Image.file(
File(image!.path),
width: 150,
fit: BoxFit.cover,
),
),
Функция для получения изображения из галереи
void filePicker() async {
final File? selectedImage =
await ImagePicker.pickImage(source: ImageSource.gallery);
print(selectedImage!.path);
setState(() {
image = selectedImage;
fileContent = image!.readAsBytesSync();
fileContentBase64 = base64.encode(fileContent);
});
}
Теперь в функции Api, как я должен ее использовать ?
Future<void> SaveCustomTestBooking() async {
var jsonResponse;
if (EncUserId.isNotEmpty) {
var postUri = Uri.parse("http://myAPIstomTestBooking");
var request = http.MultipartRequest('POST',postUri);
request.fields['VisitDate'] = '_selectedDate';
request.fields['EncUserId'] = 'EncUserId';
request.files.add(new http.MultipartFile.fromBytes(
"UserFile", File(image!.path).readAsBytesSync(),
filename:"Image.jpg",
contentType: MediaType('image', 'jpg')));
request.send().then((response){
if (response.statusCode == 200) {
print("Uploaded!");
Navigator.push(context, MaterialPageRoute(builder: (context) => DieticianAfterDateSelectPage(rresponse:DieticianEncBookingIdModel.fromJson(jsonResponse),)));
} else {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text("Somthing went wrong")));
throw Exception("Faild to fetch");
}
}
);}
}
Ответ №1:
Вот пример кода использования изображения, как в параметрах тела Http, с использованием составного запроса.
request.files.add(new http.MultipartFile.fromBytes(
"thumbnail", File(thumbnailImage.path).readAsBytesSync(),
filename:"Image.jpg",
contentType: MediaType('image', 'jpg')));
здесь «миниатюра» — это ключевое слово json. используй свой собственный. Спасибо