Доступ к пути к файлу при загрузке формы с помощью Iron Params

Я попытался получить временный путь к загруженному файлу, используя параметры Iron. У меня есть этот обработчик запросов:

fn handler(req: &mut Request) -> IronResult<Response> {
    let tmp_file_name = req.get_ref::<Params>().unwrap().find(&["file"]).unwrap();
    println!("{:?}", tmp_file_name);
    Ok( Response::with( (status::Ok, "Lorem Ipsum.") ) )
}

Это отображает что-то вроде этого:

File { path: "/xxx/yyy", filename: Some("file.txt"), size: 123 }

Но если я попытаюсь получить доступ к пути:

println!("{:?}", tmp_file_name.path());

Он не компилируется:

error: attempted access of field `path` on type `&params::Value`, 
but no field with that name was found

Я думаю, что пропустил некоторые основы о типе, но я не знаю, с чего (пере) начать.

1 ответ

Решение

params::Value это не params::File, но перечисление, которое может содержать params::File,

Это должно работать с правильным импортом (не проверено):

match req.get_ref::<Params>().unwrap().find(&["file"]) {
  Some(&Value::File(ref file)) => {
    println!("{:?}", file.path())
  }
  _ => {
    println!("no file");
  }
}
Другие вопросы по тегам