如果 total = -1
,通常是因为服务器不支持「Content-Length」标头的原因。
可以试试通过在 Dio 的 HttpOptions 配置中设置 receiveDataWhenStatusError
为 true
,以便在状态代码不是 200 时仍然能够接收到数据。
dio.options.receiveDataWhenStatusError = true;
此外,也可以通过手动读取流的方式实现下载,以在状态代码不是 200 时仍然能够接收到数据:
Response response = await dio.get("https://yourapi.com/file.flv", options: Options(responseType: ResponseType.stream)); var data = await response.data.stream.toBytes(); print(data);