From 00623291ac32c74f98ff14498773c4bc2c9852e1 Mon Sep 17 00:00:00 2001 From: Tobias Taschner Date: Thu, 1 Nov 2018 17:40:28 +0100 Subject: [PATCH] Use Content-Disposition in GetSuggestedFileName() --- src/common/webrequest.cpp | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/src/common/webrequest.cpp b/src/common/webrequest.cpp index 6bd870c384..db5fa75273 100644 --- a/src/common/webrequest.cpp +++ b/src/common/webrequest.cpp @@ -277,16 +277,29 @@ wxString wxWebResponse::GetSuggestedFileName() const { wxString suggestedFilename; - // TODO: get from Content-Disposition header - - wxURI uri(GetURL()); - if ( uri.HasPath() ) + // Try to determine from Content-Disposition header + wxString contentDisp = GetHeader("Content-Disposition"); + wxString disp; + wxWebRequestHeaderMap params; + wxWebRequest::SplitParameters(contentDisp, disp, params); + if ( disp == "attachment" ) { - wxFileName fn(uri.GetPath()); + // Parse as filename to filter potential path names + wxFileName fn(params["filename"]); suggestedFilename = fn.GetFullName(); } - else - suggestedFilename = uri.GetServer(); + + if ( suggestedFilename.empty() ) + { + wxURI uri(GetURL()); + if ( uri.HasPath() ) + { + wxFileName fn(uri.GetPath()); + suggestedFilename = fn.GetFullName(); + } + else + suggestedFilename = uri.GetServer(); + } return suggestedFilename; }