Introduction to VPS and Web Technology Development

gin文件二进制上传

自由vps golang
func (this UploadService) Upload(c *gin.Context) {

	form, err := c.MultipartForm()
	if err != nil {
		data := struct {
			Code  int32    `json:"code"`
			Msg   string   `json:"message"`
			Paths []string `json:"paths"`
		}{Code: http.StatusBadRequest,
			Msg:   "表单主体缺失",
			Paths: []string{}}
		c.JSON(http.StatusOK, data)
		return
	}
	if form.File == nil {
		data := struct {
			Code  int32    `json:"code"`
			Msg   string   `json:"message"`
			Paths []string `json:"paths"`
		}{Code: http.StatusBadRequest,
			Msg:   "表单未传文件",
			Paths: []string{}}
		c.JSON(http.StatusOK, data)
		return
	}
	files := form.File["data"]
	paths := make([]string, 0)
	for _, file := range files {
		log.Println(file.Filename)
		// 保存文件
		fileHandle, err := file.Open()
		defer fileHandle.Close()
		if err != nil {
			continue
		}
		// file中没有单独列出扩展名,所以此处需要单独取一次
		fileExt := path.Ext(file.Filename)

		// 此处重命名文件名 取此时的时间千分秒作为文件名
		filename := time.Now().UnixMilli()
		// 以年月为文件目录进行分类
		tTime := time.Now().Format("20060101")
		// 年月/文件名.扩展名(注意不要再定义的目录前面加/)
		ossFilePath := fmt.Sprintf("%s/%v%s", tTime, filename, fileExt)

		fileOssPath, err := this.OSS.Upload(fileHandle, ossFilePath)
		paths = append(paths, fileOssPath)
	}
	fmt.Println("文件地址", paths)

	data := struct {
		Code  int32    `json:"code"`
		Msg   string   `json:"message"`
		Paths []string `json:"paths"`
	}{Code: 0,
		Msg:   "成功",
		Paths: paths}
	c.JSON(http.StatusOK, data)
}
使用chatGPT寻求答案
标签: 暂无标签

免责声明:

本站提供的资源,都来自网络,版权争议与本站无关,所有内容及软件的文章仅限用于学习和研究目的。不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负,我们不保证内容的长久可用性,通过使用本站内容随之而来的风险与本站无关,您必须在下载后的24个小时之内,从您的电脑/手机中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。侵删请致信E-mail:master@freevpsweb.com

同类推荐
评论列表