Gin 的文件上传

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

gin 文件上传

注意:需要在上传文件的 form 表单上面需要加入 enctype="multipart/form-data" ## 一、单文件上传 ### 1、定义模板 例如: ```html

点击上传图片 //name属性提供给后端接口

``` 注意:在真实的项目中,我们需要定义模板!!!{{define 模板名}} html {{end}} ### 2、定义业务逻辑

```go func (c UserController) FileUp(ctx *gin.Context) {

file, err := ctx.FormFile("myGoodsImg")
if err != nil {
    ctx.JSON(http.StatusInternalServerError, gin.H{ "message": err.Error(), })
return

} // 上传文件到指定的目录 dst := path.Join("./static/upload", file.Filename) fmt.Println(dst) ctx.SaveUploadedFile(file, dst) ctx.JSON(http.StatusOK, gin.H{ "message": fmt.Sprintf("'%s' fileUpSucc!", file.Filename), }) } ```

二、多文件上传--不同名字的多个文件

### 1、定义模板

```html

点击上传图片 //name属性提供给后端接口

```

2、定义业务逻辑

go //只需要多添加一个就行了 file, err2 := ctx.FormFile("myGoodsImg2") if err2 != nil { ctx.JSON(http.StatusInternalServerError, gin.H{ "message": err.Error(), }) 注意:但是我们一般上传文件都是一个按钮然后选择多文件一键提交上传,因此,我们应该学会多文件上传--相同名字的多个文件

三、多文件上传--相同同名字的多个文件

### 1、定义模板 在单文件上传的模板上的input改成下面这行代码: html <input type="file" name="myGoodsImg[]" id="uploadfile" multiple>

### 2、定义业务逻辑

go func (c UserController) MuchAddFile(ctx *gin.Context) { // Multipart form form, _ := ctx.MultipartForm() files := form.File["myGoodsImg[]"] // var dst; for _, file := range files { //使用for循环将files循环出来 // 上传文件至指定目录 dst := path.Join("./static/upload", file.Filename) ctx.SaveUploadedFile(file, dst) } ctx.JSON(http.StatusOK, gin.H{ "message": "文件上传成功", }) } 注意:在一个项目中,上传的文件非常多,并且需要判断文件是否是我们需要的格式。所以我们需要根据时间来分类。

四、文件上传 按照日期存储

### 1、定义模板 多文件上传--相同同名字的多个文件的模板一样

### 2、定义业务逻辑(与相同同名字的多个文件类似) 下面只写不一样的和增加的 ```go //判断文件格式

if err1 == nil { //2、获取后缀名 判断类型是否正确 .jpg .png .gif .jpeg extName := path.Ext(file.Filename) allowExtMap := map[string]bool{ ".jpg": true, ".png": true, ".gif": true, ".jpeg": true, }

//做出提示
if _, ok := allowExtMap[extName]; !ok {
ctx.String(200, "文件类型不合法")
return

}

//3、创建图片保存目录 day := models.GetDay() //使用公共模板方法 dir := "./static/upload/" + day //使用时间做路径 if err := os.MkdirAll(dir, 0666); err != nil { log.Error(err) } //4、生成文件名称
fileUnixName := strconv.FormatInt(models.GetUnix(), 10) //5、保存文件到该路径 saveDir := path.Join(dir, fileUnixName+extName) ctx.SaveUploadedFile(file, saveDir) } ```

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值