Не удается загрузить изображение из Flutter Assets
Я пытаюсь загрузить изображение из приложения флаттера в сервис vize.ai ( https://vize.ai/docs). Я использую дартс:http для этого.
Я использую запрос MultipartFile от dart:http для отправки файла. Я могу загрузить изображение из дескриптора "Файл", однако я не могу сделать то же самое для изображения из ресурса. Причина в том, что изображение из ресурса загружается как ByteData, который я затем конвертирую в Uint8List (так как для MultipartFileRequest ожидается List). Тем не менее, я продолжаю получать плохие запросы от сервера.
Код, который работает для обработчиков файлов.
static Future<http.StreamedResponse> uploadTrainingImages(File imageFile) async {
var stream = new http.ByteStream(DelegatingStream.typed(imageFile.openRead()));
var length = await imageFile.length();
String url = 'https://api.vize.ai/v2/training-image/';
var request = new http.MultipartRequest('POST', Uri.parse(url));
request.headers['Authorization'] = "Token " + VIZE_AI_TOKEN;
var multipartFile = new http.MultipartFile('img_path', stream, length, filename: basename(imageFile.path));
request.files.add(multipartFile);
var response = await request.send();
response.stream.listen((value) {
print(value);
});
return response;
}
Код, который не работает для Image Assets:
static Future<http.StreamedResponse> uploadTrainingImagesFromAssets(String assetName) async {
try {
ByteData data = await rootBundle.load(assetName);
String url = 'https://api.vize.ai/v2/training-image/';
var request = new http.MultipartRequest('POST', Uri.parse(url));
request.headers['Authorization'] = "Token " + VIZE_AI_TOKEN;
var multipartFile = new http.MultipartFile.fromBytes("img_path", data.buffer.asUint8List());
request.files.add(multipartFile);
var response = await request.send();
response.stream.listen((value) {
print(value);
});
return response;
} catch(e) {
print(e);
}
}
Хотите знать, что еще мне нужно установить (например, MediaType) или что-то?