From a82f755f9eb57d00e3a79b4e050adedea746bec1 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Wed, 16 Aug 2023 11:41:43 +0200 Subject: [PATCH] refactor: keep both headers --- files/multifilereader.go | 3 ++- files/multipartfile.go | 13 +++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/files/multifilereader.go b/files/multifilereader.go index 4811ac155..c429b5dfe 100644 --- a/files/multifilereader.go +++ b/files/multifilereader.go @@ -114,7 +114,8 @@ func (mfr *MultiFileReader) Read(buf []byte) (written int, err error) { header.Set("Content-Type", contentType) if rf, ok := entry.Node().(FileInfo); ok { - header.Set("abspath", url.QueryEscape(rf.AbsPath())) + header.Set("abspath", rf.AbsPath()) + header.Set("abspath-percent", url.QueryEscape(rf.AbsPath())) } _, err := mfr.mpWriter.CreatePart(header) diff --git a/files/multipartfile.go b/files/multipartfile.go index 242182190..4daf42812 100644 --- a/files/multipartfile.go +++ b/files/multipartfile.go @@ -100,14 +100,19 @@ func (w *multipartWalker) nextFile() (Node, error) { return NewLinkFile(string(out), nil), nil default: - abspath, err := url.QueryUnescape(part.Header.Get("abspath")) - if err != nil { - return nil, err + var absPath string + if absPathEncoded := part.Header.Get("abspath-percent"); absPathEncoded != "" { + absPath, err = url.QueryUnescape(absPathEncoded) + if err != nil { + return nil, err + } + } else { + absPath = part.Header.Get("abspath") } return &ReaderFile{ reader: part, - abspath: abspath, + abspath: absPath, }, nil } }