1

我尝试使用Iron params获取上传文件的临时路径。我有这个请求处理程序:

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

我想我错过了一些关于类型的基础知识,但我不知道从哪里(重新)开始。

4

1 回答 1

2

params::Value不是 a params::File,而是一个可以包含a的枚举params::File

这应该适用于正确的导入(未经测试):

match req.get_ref::<Params>().unwrap().find(&["file"]) {
  Some(&Value::File(ref file)) => {
    println!("{:?}", file.path())
  }
  _ => {
    println!("no file");
  }
}
于 2016-07-13T10:09:57.653 回答