Advertisement
Guest User

Untitled

a guest
Oct 24th, 2019
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.38 KB | None | 0 0
  1. multipart
  2. .fold((last_file_id, Vec::new()), |(mut last_file_id, fields), field| {
  3. let cd = match field.content_disposition() {
  4. Some(v) => v,
  5. None => return err(MultipartError::NoContentType)
  6. };
  7.  
  8. // get field name
  9. let field_name = match cd.get_name() {
  10. Some(v) => v,
  11. None => return err(MultipartError::ParseContentType)
  12. };
  13.  
  14. match cd.get_filename() {
  15. Some(real_filename) => {
  16. /* if field is file */
  17. match get_ext(real_filename) {
  18. Some(ext) => {
  19. last_file_id += 1;
  20. let path = format!("static/{}.{}", last_file_id, ext);
  21. fields.push(save_file(path, field).into_stream());
  22.  
  23. ok((last_file_id, fields))
  24. },
  25.  
  26. None => return err(MultipartError::ParseContentType)
  27. }
  28. },
  29.  
  30. None => {
  31. /* if field is value */
  32. err(MultipartError::ParseContentType)
  33. }
  34. }
  35. })
  36. .map(|(last_file_id, fields)| fields) // error here
  37. .flatten() // the hell is here
  38. .collect()
  39. .map_err(|e| {
  40. Error::from(e)
  41. })
  42. .map(|vals| {
  43. println!("{:?}", vals);
  44.  
  45. serde_json::from_value::<T>(json!({})).unwrap()
  46. })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement