Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- multipart
- .fold((last_file_id, Vec::new()), |(mut last_file_id, fields), field| {
- let cd = match field.content_disposition() {
- Some(v) => v,
- None => return err(MultipartError::NoContentType)
- };
- // get field name
- let field_name = match cd.get_name() {
- Some(v) => v,
- None => return err(MultipartError::ParseContentType)
- };
- match cd.get_filename() {
- Some(real_filename) => {
- /* if field is file */
- match get_ext(real_filename) {
- Some(ext) => {
- last_file_id += 1;
- let path = format!("static/{}.{}", last_file_id, ext);
- fields.push(save_file(path, field).into_stream());
- ok((last_file_id, fields))
- },
- None => return err(MultipartError::ParseContentType)
- }
- },
- None => {
- /* if field is value */
- err(MultipartError::ParseContentType)
- }
- }
- })
- .map(|(last_file_id, fields)| fields) // error here
- .flatten() // the hell is here
- .collect()
- .map_err(|e| {
- Error::from(e)
- })
- .map(|vals| {
- println!("{:?}", vals);
- serde_json::from_value::<T>(json!({})).unwrap()
- })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement