Проблема при загрузке изображения в виде двоичного тела в Flutter. Всегда отображается как поврежденное

#flutter #dart #file-upload

#flutter #dart #загрузка файла

Вопрос:

Мне нужно отправить изображение на серверную часть, которая поддерживает загрузку мультимедиа в теле запроса в виде двоичного файла.

введите описание изображения здесь

Если я попытаюсь загрузить изображение через Postman, используя опцию двоичного тела, со значением заголовка ‘Content-Type’: ‘image / jpg’, изображение загружается правильно, и я могу получить доступ к загруженным носителям через URL-адрес ответа из серверной части.

То же самое, когда я пытаюсь сделать это с Flutter, я получаю код ответа 200, но, я думаю, загруженный файл поврежден. Ниже приведен код, который я использую:

 var response = await http.put(URL),
    headers: {
      'Content-Type': "image/jpg",
      'Accept': "*/*",
      'Content-Length': File(portraitImagePath).lengthSync().toString(),
      'Connection': 'keep-alive',
    },
    body: File(portraitImagePath).readAsBytesSync(),
    );
 

Пожалуйста, помогите мне определить проблему и завершить этот процесс загрузки.

Ответ №1:

Обновление рабочего кода, чтобы он мог помочь любому, кто сталкивается с такой же проблемой.

 var response = await http.put(URL),
headers: {
  'Content-Type': "image/jpg"
},
body: await File(portraitImagePath).readAsBytes(),
);
 

Я пропустил включение await при чтении изображения, а также изменил readAsBytes() на readAsBytesSync() из readAsBytesSync()