fix multipart with unicode filename (#420)
This commit is contained in:
		| @@ -397,7 +397,7 @@ impl PercentEncoding { | ||||
|             "Content-Disposition: form-data; {}{}{}", | ||||
|             self.format_parameter("name", name), | ||||
|             match field.file_name { | ||||
|                 Some(ref file_name) => format!("; {}", self.format_parameter("filename", file_name)), | ||||
|                 Some(ref file_name) => format!("; {}", self.format_filename(file_name)), | ||||
|                 None => String::new(), | ||||
|             }, | ||||
|             match field.mime { | ||||
| @@ -414,6 +414,16 @@ impl PercentEncoding { | ||||
|         }) | ||||
|     } | ||||
|  | ||||
|     // According to RFC7578 Section 4.2, `filename*=` syntax is invalid. | ||||
|     // See https://github.com/seanmonstar/reqwest/issues/419. | ||||
|     fn format_filename(&self, filename: &str) -> String { | ||||
|         let legal_filename = filename.replace("\\", "\\\\") | ||||
|                                      .replace("\"", "\\\"") | ||||
|                                      .replace("\r", "\\\r") | ||||
|                                      .replace("\n", "\\\n"); | ||||
|         format!("filename=\"{}\"", legal_filename) | ||||
|     } | ||||
|  | ||||
|     fn format_parameter(&self, name: &str, value: &str) -> String { | ||||
|         let legal_value = match *self { | ||||
|             PercentEncoding::PathSegment => { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user