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
}




 

相关推荐

  1. golang 根据URL获取文件名

    2024-01-26 13:48:05       34 阅读
  2. 根据地址栏url上key获取

    2024-01-26 13:48:05       9 阅读
  3. Golang获取文件名扩展名/后缀

    2024-01-26 13:48:05       9 阅读
  4. 关于根据url下载文件之空格符报错

    2024-01-26 13:48:05       13 阅读
  5. vue 根据url预览或下载文件

    2024-01-26 13:48:05       13 阅读
  6. kotlin根据文件的filePath转化为uri

    2024-01-26 13:48:05       36 阅读
  7. (JDK11)根据文件Url输出该文件的Base64

    2024-01-26 13:48:05       11 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-26 13:48:05       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-26 13:48:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-26 13:48:05       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-26 13:48:05       20 阅读

热门阅读

  1. GO——GPM

    2024-01-26 13:48:05       34 阅读
  2. golang 实现协程池

    2024-01-26 13:48:05       36 阅读
  3. golang map真有那么随机吗?——map遍历研究

    2024-01-26 13:48:05       26 阅读
  4. php/js:实现几秒后进行页面跳转

    2024-01-26 13:48:05       35 阅读
  5. 1/25 work

    1/25 work

    2024-01-26 13:48:05      33 阅读
  6. HTTP简单的接收和发送

    2024-01-26 13:48:05       38 阅读
  7. Spring Cloud Gateway 知识总结

    2024-01-26 13:48:05       35 阅读
  8. Python图像处理【19】基于霍夫变换的目标检测

    2024-01-26 13:48:05       34 阅读
  9. docker mysql8.0.26 迁移 mysql8.3.0

    2024-01-26 13:48:05       28 阅读
  10. LambdaQueryWrapper用法超详细讲解

    2024-01-26 13:48:05       32 阅读
  11. flink中的重启策略

    2024-01-26 13:48:05       32 阅读