Flutter: загрузить изображение, используя двоичное тело - PullRequest
0 голосов
/ 20 мая 2019

Я хочу загрузить файл, используя двоичное тело, как на скриншоте:

screenshot

Пока у меня просто есть:

      save() async {
         http.put(url,headers:headers, body: );

Ответы [ 2 ]

1 голос
/ 20 мая 2019

Вы можете использовать это для загрузки изображения

Future uploadImage(File imageFile)async{
  var stream= new http.ByteStream(DelegatingStream.typed(imageFile.openRead()));
  var length= await imageFile.length();
  var uri = Uri.parse("Image upload url");
  var request = new http.MultipartRequest("POST", uri);
  var filename = "Your image name";
  var multipartFile = new http.MultipartFile("image", stream, length, filename: basename(filename));
  request.files.add(multipartFile);
  var response = await request.send();
  if(response.statusCode==200){
    print("Image Uploaded");
  }else{
    print("Upload Failed");
 }
}
1 голос
/ 20 мая 2019

Параметр body метода put принимает List<int>, который будет использоваться как список байтов

Из справочника http API: https://pub.dev/documentation/http/latest/http/put.html

body устанавливает тело запроса.Это может быть строка, список или карта.Если это строка, она кодируется с использованием кодировки и используется в качестве тела запроса.Тип содержимого запроса по умолчанию будет «text / plain».

Если body - это List, он используется как список байтов для тела запроса.

If bodyКарта, она закодирована как поля формы с использованием кодировки.Тип содержимого запроса будет установлен на «application / x-www-form-urlencoded»;это нельзя переопределить.

Примеры отправки файла:

main() async {
  await put(url, body: File('the_file').readAsBytesSync());
}
...