Как объясняется в этом ответе, можно использовать Body::wrap_stream(read_stream)
для POST содержимого файла без предварительного считывания всего содержимого в память.
Как мы можем сделать то же самое в составе reqwest::multipart::Form
? Следующий код не работает с ошибкой the trait `From<&mut dyn Stream<Item = std::result::Result<Vec<u8>, std::io::Error>>>` is not implemented for `Body`
.
let metadata_json = "{ \"file_owner\": \"bob smith\" }";
let metadata_part = reqwest::multipart::Part::text(metadata_json);
let read_stream : Stream<Item = std::io::Result<Vec<u8>> = my_file_stream;
let stream_part = reqwest::multipart::Part::stream(read_stream);
let multipart_form = reqwest::multipart::Form::new()
.part("metadata", metadata_part)
.part("file", stream_part);
Я попытался предоставить реализацию From
, которая просто вызывает Body::wrap_stream
, но это запрещено, поскольку ни From
, ни Body
не определены в моем собственном коде.