【问题标题】:Why are images downloaded with Reqwest's .text() method broken?为什么使用 Reqwest 的 .text() 方法下载的图像会损坏?
【发布时间】:2019-05-07 20:27:49
【问题描述】:

如何在某个网站上检索图像并正确使用 Reqwest 将其保存到本地?我尝试使用.text(),但图像已损坏。

Error interpreting JPEG image file (Not a JPEG file: starts with 0xef 0xbf)

我试过的代码

extern crate reqwest;

use std::error::Error;
use std::fs::File;
use std::io::prelude::*;
use std::path::Path;

fn main() {
    let mut image_file = reqwest::Client::new()
        .get("https://images.pexels.com/photos/2124773/pexels-photo-2124773.jpeg")
        .send()
        .unwrap()
        .text()
        .unwrap();
    let path = Path::new("tmp/img_test.jpeg");
    let display = path.display();
    let mut file = match File::create(&path) {
        Err(why) => panic!("couldn't create {}: {}", display, why.description()),
        Ok(file) => file,
    };
    match file.write_all(image_file.as_bytes()) {
        Err(why) => panic!("couldn't write to {}: {}", display, why.description()),
        Ok(_) => println!("successfully wrote to {}", display),
    }
}

【问题讨论】:

    标签: rust reqwest


    【解决方案1】:

    不要使用text,它用于文本,因此会尝试解码原始字节。

    只需编写response,它实现了Into<Body>,其中Body 是一个流(这也比获取字节更有效):

    let mut client = reqwest::Client::new();
    let mut image_file = client
        .get("https://images.pexels.com/photos/2124773/pexels-photo-2124773.jpeg")
        .send()
        .unwrap();
    
    let path = Path::new("img_test.jpeg");
    let display = path.display();
    let mut file = match File::create(&path) {
        Err(why) => panic!("couldn't create {}: {}", display, why.description()),
        Ok(file) => file,
    };
    match std::io::copy(&mut image_file, &mut file) {
        Err(why) => panic!("couldn't write to {}: {}", display, why.description()),
        Ok(_) => println!("successfully wrote to {}", display),
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-20
      • 2017-04-08
      • 2018-09-01
      相关资源
      最近更新 更多