Skip to content

Commit 9c5aeba

Browse files
authored
fix: path url encode filename parse (#939)
1 parent a094715 commit 9c5aeba

File tree

3 files changed

+22
-0
lines changed

3 files changed

+22
-0
lines changed

internal/protocol/http/fetcher.go

+4
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,10 @@ func (f *Fetcher) Resolve(req *base.Request) error {
160160
// get file filePath by URL
161161
if file.Name == "" {
162162
file.Name = path.Base(httpReq.URL.Path)
163+
// Url decode
164+
if file.Name != "" {
165+
file.Name, _ = url.QueryUnescape(file.Name)
166+
}
163167
}
164168
// unknown file filePath
165169
if file.Name == "" || file.Name == "/" || file.Name == "." {

internal/protocol/http/fetcher_test.go

+10
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,16 @@ func TestFetcher_Resolve(t *testing.T) {
4747
},
4848
},
4949
}, t)
50+
testResolve(test.StartTestCustomServer, "%E6%B5%8B%E8%AF%95.zip", &base.Resource{
51+
Size: 0,
52+
Range: false,
53+
Files: []*base.FileInfo{
54+
{
55+
Name: "测试.zip",
56+
Size: 0,
57+
},
58+
},
59+
}, t)
5060
testResolve(test.StartTestCustomServer, test.BuildName, &base.Resource{
5161
Size: 0,
5262
Range: false,

internal/test/httptest.go

+8
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,14 @@ func StartTestCustomServer() net.Listener {
9494
defer file.Close()
9595
io.Copy(writer, file)
9696
})
97+
mux.HandleFunc("/%E6%B5%8B%E8%AF%95.zip", func(writer http.ResponseWriter, request *http.Request) {
98+
file, err := os.Open(BuildFile)
99+
if err != nil {
100+
panic(err)
101+
}
102+
defer file.Close()
103+
io.Copy(writer, file)
104+
})
97105
return mux
98106
})
99107
}

0 commit comments

Comments
 (0)