当前位置: 首页 > news >正文

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=" + fileidresp, 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
}



 

http://www.lryc.cn/news/289381.html

相关文章:

  • 【Javaweb程序设计】【C00163】基于SSM房屋中介服务平台(论文+PPT)
  • ES文档索引、查询、分片、文档评分和分析器技术原理
  • element plus使用问题
  • 洛谷p1036选数
  • 【JavaSE篇】——数组的定义与使用
  • HCS 华为云Stack产品组件
  • 四、MySQL之增删改
  • MQ面试题之Kafka
  • 2023年CSDN年底总结-独立开源创作者第一年
  • hardware simulation——编译框架优化
  • Leetcode刷题笔记题解(C++):1971. 寻找图中是否存在路径
  • ARM常用汇编指令
  • kali系统入侵电脑windows(win11系统)渗透测试,骇入电脑教学
  • 力扣hot100 矩阵置零 标识位
  • Android App开发-简单控件(3)——常用布局
  • Linux使用二进制包安装MySQL
  • 【vue3-pbstar-admin】一款基于vue3和nodejs的简洁后台管理系统
  • 顺序表和链表【数据结构】【基于C语言实现】【一站式速通】
  • SpringBoot 有什么优点?
  • 扫地机器人(二分算法+贪心算法)
  • Unity中创建Ultraleap 3Di交互项目
  • 【Matlab】音频信号分析及FIR滤波处理——凯泽(Kaiser)窗
  • C数据类型
  • JAVA和Go的不解之缘
  • (免费领源码)java#SSM#MySQL汽车车辆管理系统68424-计算机毕业设计项目选题推荐
  • 25考研每日的时间安排
  • 小程序直播项目搭建
  • 《Python 简易速速上手小册》第10章:Python 项目实战(基于最新版 Python3.12 编写)
  • 防御保护第六天笔记
  • 【yaml 文件使用】pytest+request 框架中 yaml 配置文件使用