fmt.Println(url.QueryEscape("https://www.test.com/test?query=猪"))
fmt.Println(url.PathEscape("https://www.test.com/test?query=猪"))
fmt.Println(url.ParseQuery("a=111&b=222"))
fmt.Println(url.ParseQuery("https://test.com/query?a=111&b=222"))
output:
https%3A%2F%2Fwww.test.com%2Ftest%3Fquery%3D%E7%8C%AA
https:%2F%2Fwww.test.com%2Ftest%3Fquery=%E7%8C%AA
map[a:[111] b:[222]] <nil>
map[https://test.com/query?a:[111] b:[222]] <nil>
所以通过url 拿query 是要分两步的,
func getFileNameFromLocation(location string) (string, error) {
u, err := url.Parse(location)
if err != nil {
return "", apperror.NewInvalidParameterError("location invalid")
}
m, err := url.ParseQuery(u.RawQuery)
if err != nil {
return "", apperror.NewInvalidParameterError("location query invalid")
}
filenames := m["name"]
if filenames == nil || len(filenames) < 1 {
return "", apperror.NewInvalidParameterError("location lack filename")
}
return filenames[0], nil
}
本文介绍了如何使用Go语言中的url包进行URL编码、解码和解析查询参数。通过示例代码展示了如何将包含中文的URL进行编码,如何从URL中解析出查询参数并转换为map结构,以及如何从location字符串中提取文件名。
5156

被折叠的 条评论
为什么被折叠?



