golang根据URL获取文件名的示例代码
作者:lmy_loveF
这篇文章主要为大家详细介绍了golang根据URL获取文件名,文中的示例代码讲解详细,对大家的学习或工作有一定的帮助,感兴趣的小伙伴可以跟随小编一起学习一下
只有一个文件地址,但是没有文件名称,文件地址:http://XXXXXXX/getfile.aspx?fileid=999
但是系统需要把文件名称也写入到数据库
可以根据 resp.Header["Content-Disposition"] 获取文件名
resp.Header["Content-Disposition"]是一个 JSON对象 [{[0]:"attachement;filename=BT-3189%e4%b8%8b%e5%a3%b3(TD).pdf"}]
//复制文件到本地 func copyOaFileToPms(fileid) (int, error) { filePath := "http://XXXXXXX/getfile.aspx?fileid=" + fileid resp, err := http.Get(filePath) if err != nil { return 0, err } defer resp.Body.Close() fileName := getFilenameFromContentDisposition(resp.Header["Content-Disposition"]) fmt.Println("文件名为:", fileName) fileName, _ = url.QueryUnescape(fileName) fmt.Println("解码后文件名为:", fileName) if len(fileName) == 0 { sbjlog.Debug("copyOaFileToPms 根据文件名获取文件id失败,fileName:%v", fileName) return 0, errors.New("获取文件名称失败") } // 获取文件后缀名 fileExt := path.Ext(fileName) // 得到文件名不带后缀 onlyFileName := strings.TrimSuffix(fileName, fileExt) onlyFileName = strings.ToUpper(onlyFileName) //文件名转大写 fileNameAndExt := onlyFileName + strings.TrimPrefix(fileExt, ".") //文件名+后缀,作为新的文件名 ...... } // 从 Content-Disposition 头部信息中提取文件名 func getFilenameFromContentDisposition(contentDispositions []string) string { filename := "" for _, part := range contentDispositions { keyValue := strings.SplitN(part, "=", 2) if len(keyValue) == 2 && strings.Contains(keyValue[0], "filename") { filename = keyValue[1] return filename } } return filename }
到此这篇关于golang根据URL获取文件名的示例代码的文章就介绍到这了,更多相关golang URL获取文件名内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!