refactor: 数据块已经在内存中,直接使用 write_all
This commit is contained in:
@@ -5,7 +5,7 @@ use anyhow::{bail, ensure, Result};
|
||||
use futures::StreamExt;
|
||||
use reqwest::Method;
|
||||
use tokio::fs::{self, File};
|
||||
use tokio::io::{self, AsyncWriteExt};
|
||||
use tokio::io::AsyncWriteExt;
|
||||
|
||||
use crate::bilibili::Client;
|
||||
pub struct Downloader {
|
||||
@@ -26,16 +26,13 @@ impl Downloader {
|
||||
}
|
||||
let mut file = File::create(path).await?;
|
||||
let resp = self.client.request(Method::GET, url, None).send().await?;
|
||||
let expected = resp.content_length().unwrap_or_else(|| {
|
||||
warn!("content length is missing, fallback to 0");
|
||||
0
|
||||
});
|
||||
let expected = resp.content_length().unwrap_or_default();
|
||||
let mut received = 0u64;
|
||||
let mut stream = resp.bytes_stream();
|
||||
while let Some(bytes) = stream.next().await {
|
||||
let bytes = bytes?;
|
||||
received += bytes.len() as u64;
|
||||
io::copy(&mut bytes.as_ref(), &mut file).await?;
|
||||
file.write_all(&bytes).await?;
|
||||
}
|
||||
file.flush().await?;
|
||||
ensure!(
|
||||
|
||||
Reference in New Issue
Block a user