Size: a a a

Dart & Flutter по-русски

2020 May 27

A

Andrei in Dart & Flutter по-русски
Andrei
Всем привет, есть проблема Отправка больших файлов даже через form multipart жрет память. Если при обычном режиме работы память не поднимается выше 40-50мб, то при отправке идет резкий скачок на 800мб. Кто с таким сталкивался и куда копать?
по этой проблеме никто не подскажет? а то уже хз куда копать, хоть platform channel пиши
источник

АК

Андрей Козак... in Dart & Flutter по-русски
я ретрофитом отправляю, ноу проблем
источник

АК

Андрей Козак... in Dart & Flutter по-русски
@POST("/image")
@MultiPart()
Future<String> uploadImage({@Part() File file});
источник

АК

Андрей Козак... in Dart & Flutter по-русски
вот что кодогенерируется
источник

АК

Андрей Козак... in Dart & Flutter по-русски
uploadImage({file}) async {
 const _extra = <String, dynamic>{};
 final queryParameters = <String, dynamic>{};
 queryParameters.removeWhere((k, v) => v == null);
 final _data = FormData();
 if (file != null) {
   _data.files.add(MapEntry(
       'file',
       MultipartFile.fromFileSync(file.path,
           filename: file.path.split(Platform.pathSeparator).last)));
 }
 final Response<String> _result = await _dio.request('/image',
     queryParameters: queryParameters,
     options: RequestOptions(
         method: 'POST',
         headers: <String, dynamic>{},
         extra: _extra,
         baseUrl: baseUrl),
     data: _data);
 final value = _result.data;
 return Future.value(value);
}
источник

A

Andrei in Dart & Flutter по-русски
по сути отличие только тут MultipartFile.fromFileSync(file.path
источник

A

Andrei in Dart & Flutter по-русски
а я stream отдаю
источник

A

Andrei in Dart & Flutter по-русски
хотя может dio как то внутри оптимизирует
источник

A

Andrei in Dart & Flutter по-русски
почему dio используешь, а не стандартный http?
источник

АК

Андрей Козак... in Dart & Flutter по-русски
дык так проще
источник

АК

Андрей Козак... in Dart & Flutter по-русски
можно так то, post запрос и на сокетах написать, но зачем, если поцоны заморочились и сделали норм обертки)
источник

A

Andrei in Dart & Flutter по-русски
ок попробую dio, может поможет
источник

АК

Андрей Козак... in Dart & Flutter по-русски
а что тебе сервер в ответ на загрузку файла шлет?
источник

A

Andrei in Dart & Flutter по-русски
200 статус
источник

АК

Андрей Козак... in Dart & Flutter по-русски
я прост хз как изоляты во флаттере работают, возможно у них отдельные области памяти и например твои видеофайлы сначала копируются в эту область
источник

АК

Андрей Козак... in Dart & Flutter по-русски
ты с диска видеофайлы тягаешь?
источник

A

Andrei in Dart & Flutter по-русски
да
источник

АК

Андрей Козак... in Dart & Flutter по-русски
ну если чо, можно через https://pub.dev/packages/flutter_uploader попробывать разрулить
источник

АК

Андрей Козак... in Dart & Flutter по-русски
я аналогичный downloader юзал, там через натив реализовано
источник

АК

Андрей Козак... in Dart & Flutter по-русски
будет плашка на Андроиде всплывать - что ты грузишь файл
источник