Не удается загрузить изображение из 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) или что-то?

0 ответов

Другие вопросы по тегам