mirror of
https://github.com/GopeedLab/gopeed.git
synced 2026-11-06 16:40:32 +00:00
fix: HTTP filename parsing for mixed encodings and GBK-encoded (#1189)
This commit is contained in:
1 parent
49b4d99b5e
commit
2f5fbfb17c
4 files changed
+253
-30
No files matched your search
@@ -42,7 +42,7 @@ func TestFetcher_Resolve(t *testing.T) {
|
||||
Range: false,
|
||||
Files: []*base.FileInfo{
|
||||
{
|
||||
Name: "测试.zip",
|
||||
Name: test.TestChineseFileName,
|
||||
Size: test.BuildSize,
|
||||
},
|
||||
},
|
||||
@@ -52,7 +52,7 @@ func TestFetcher_Resolve(t *testing.T) {
|
||||
Range: false,
|
||||
Files: []*base.FileInfo{
|
||||
{
|
||||
Name: "测试.zip",
|
||||
Name: test.TestChineseFileName,
|
||||
Size: test.BuildSize,
|
||||
},
|
||||
},
|
||||
@@ -62,7 +62,7 @@ func TestFetcher_Resolve(t *testing.T) {
|
||||
Range: false,
|
||||
Files: []*base.FileInfo{
|
||||
{
|
||||
Name: "测试.zip",
|
||||
Name: test.TestChineseFileName,
|
||||
Size: 0,
|
||||
},
|
||||
},
|
||||
@@ -77,6 +77,42 @@ func TestFetcher_Resolve(t *testing.T) {
|
||||
},
|
||||
},
|
||||
}, t)
|
||||
// Test mixed encoding Content-Disposition where mime.ParseMediaType fails
|
||||
// due to invalid characters, but filename*= contains the correct UTF-8 encoded name
|
||||
testResolve(test.StartTestCustomServer, "mixed-encoding", &base.Resource{
|
||||
Size: test.BuildSize,
|
||||
Range: false,
|
||||
Files: []*base.FileInfo{
|
||||
{
|
||||
Name: test.TestChineseFileName,
|
||||
Size: test.BuildSize,
|
||||
},
|
||||
},
|
||||
}, t)
|
||||
// Test filename*= only (RFC 5987 format)
|
||||
testResolve(test.StartTestCustomServer, "filename-star", &base.Resource{
|
||||
Size: test.BuildSize,
|
||||
Range: false,
|
||||
Files: []*base.FileInfo{
|
||||
{
|
||||
Name: test.TestChineseFileName,
|
||||
Size: test.BuildSize,
|
||||
},
|
||||
},
|
||||
}, t)
|
||||
// Test GBK-encoded filename (common on Chinese Windows servers)
|
||||
// Before fix: "测试.zip" sent as GBK bytes -> parsed as "²âÊÔ.zip" (garbled)
|
||||
// After fix: correctly decoded back to "测试.zip"
|
||||
testResolve(test.StartTestCustomServer, "gbk-encoded", &base.Resource{
|
||||
Size: test.BuildSize,
|
||||
Range: false,
|
||||
Files: []*base.FileInfo{
|
||||
{
|
||||
Name: test.TestChineseFileName,
|
||||
Size: test.BuildSize,
|
||||
},
|
||||
},
|
||||
}, t)
|
||||
|
||||
fetcher := buildFetcher()
|
||||
err := fetcher.Resolve(&base.Request{
|
||||
|
||||
Reference in new issue
Block a user