|
@@ -264,14 +264,18 @@ impl PrfItem {
|
|
// parse the Content-Disposition
|
|
// parse the Content-Disposition
|
|
let filename = match header.get("Content-Disposition") {
|
|
let filename = match header.get("Content-Disposition") {
|
|
Some(value) => {
|
|
Some(value) => {
|
|
- let filename = value.to_str().unwrap_or("");
|
|
|
|
- match help::parse_str::<String>(filename, "filename") {
|
|
|
|
- Some(filename) => Some(filename),
|
|
|
|
- None => match help::parse_str::<String>(filename, "filename*") {
|
|
|
|
|
|
+ let filename = format!("{value:?}");
|
|
|
|
+ let filename = filename.trim_matches('"');
|
|
|
|
+ match help::parse_str::<String>(filename, "filename*") {
|
|
|
|
+ Some(filename) => {
|
|
|
|
+ let iter = percent_encoding::percent_decode(filename.as_bytes());
|
|
|
|
+ let filename = iter.decode_utf8().unwrap_or_default();
|
|
|
|
+ filename.split("''").last().map(|s| s.to_string())
|
|
|
|
+ }
|
|
|
|
+ None => match help::parse_str::<String>(filename, "filename") {
|
|
Some(filename) => {
|
|
Some(filename) => {
|
|
- let iter = percent_encoding::percent_decode(filename.as_bytes());
|
|
|
|
- let filename = iter.decode_utf8().unwrap_or_default();
|
|
|
|
- filename.split("''").last().map(|s| s.to_string())
|
|
|
|
|
|
+ let filename = filename.trim_matches('"');
|
|
|
|
+ Some(filename.to_string())
|
|
}
|
|
}
|
|
None => None,
|
|
None => None,
|
|
},
|
|
},
|