从 Content-Disposition Header 获取 UTF-8 文件名
Get UTF-8 Filename from Content-Disposition Header
当我尝试从 Content-Disposition Header 获取文件名时,go 函数 mime.ParseMediaType()
失败并出现错误 mime: invalid media parameter
我已经发现,它适用于正常的文件名格式:
attachment; filename="Geotag_Stamp%20(1)%20(1).jpg"
<- 有效
但是使用 UTF-8 文件名(在 rfc6266 中定义)它失败并出现第一段中给出的错误:
attachment; filename*=UTF-8''"Geotag_Stamp%20(1)%20(1).jpg"
<- 失败
这是我的代码:
package main
import (
"fmt"
"mime"
)
func main() {
d, params, err := mime.ParseMediaType(`attachment; filename="Geotag_Stamp%20(1)%20(1).jpg"`)
if err != nil {
fmt.Println("**Normal Filename error:", err)
}
fmt.Println("Normal:", d, params)
d, params, err = mime.ParseMediaType(`attachment; filename*=UTF-8''"Geotag_Stamp%20(1)%20(1).jpg"`)
if err != nil {
fmt.Println("**UTF-8 Filename error:", err)
}
fmt.Println("UTF-8",d, params)
}
有没有可能是stdlib不支持Content-Disposition->Filename的UTF-8版本?
引号必须包含 header 值:
attachment; filename*="UTF-8''Geotag_Stamp%20(1)%20(1).jpg"
当我尝试从 Content-Disposition Header 获取文件名时,go 函数 mime.ParseMediaType()
失败并出现错误 mime: invalid media parameter
我已经发现,它适用于正常的文件名格式:
attachment; filename="Geotag_Stamp%20(1)%20(1).jpg"
<- 有效
但是使用 UTF-8 文件名(在 rfc6266 中定义)它失败并出现第一段中给出的错误:
attachment; filename*=UTF-8''"Geotag_Stamp%20(1)%20(1).jpg"
<- 失败
这是我的代码:
package main
import (
"fmt"
"mime"
)
func main() {
d, params, err := mime.ParseMediaType(`attachment; filename="Geotag_Stamp%20(1)%20(1).jpg"`)
if err != nil {
fmt.Println("**Normal Filename error:", err)
}
fmt.Println("Normal:", d, params)
d, params, err = mime.ParseMediaType(`attachment; filename*=UTF-8''"Geotag_Stamp%20(1)%20(1).jpg"`)
if err != nil {
fmt.Println("**UTF-8 Filename error:", err)
}
fmt.Println("UTF-8",d, params)
}
有没有可能是stdlib不支持Content-Disposition->Filename的UTF-8版本?
引号必须包含 header 值:
attachment; filename*="UTF-8''Geotag_Stamp%20(1)%20(1).jpg"