Получить имя файла UTF-8 из заголовка Content-Disposition - PullRequest
0 голосов
/ 26 сентября 2018

Когда я пытаюсь получить имя файла из заголовка Content-Disposition, функция go mime.ParseMediaType() завершается с ошибкой mime: invalid media parameter


Я уже выяснил, что она работает с обычным именем файлаформат:

attachment; filename="Geotag_Stamp%20(1)%20(1).jpg" <- работает </p>

Но с именем файла UTF-8 (определенным в rfc6266 ) происходит сбой с ошибкой, приведенной в первом абзаце:

attachment; filename*=UTF-8''"Geotag_Stamp%20(1)%20(1).jpg" <- не работает </p>


Вот мой код:

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 не поддерживает UTF-8-версию Content-Disposition-> Filename?

1 Ответ

0 голосов
/ 26 сентября 2018

Кавычки должны окружать значение заголовка:

attachment; filename*="UTF-8''Geotag_Stamp%20(1)%20(1).jpg"

Запустить его на детской площадке

...