从 Content-Disposition 标头获取 UTF-8 文件名

Sim*_*rey 1 mime go

当我尝试从 Content-Disposition 标头获取文件名时,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)
}
Run Code Online (Sandbox Code Playgroud)

在操场上


stdlib 是否可能不支持 Content-Disposition->Filename 的 UTF-8 版本?

Cer*_*món 5

引号必须括住标头值:

attachment; filename*="UTF-8''Geotag_Stamp%20(1)%20(1).jpg"
Run Code Online (Sandbox Code Playgroud)

在操场上跑起来