注意哦:上传文件大小受到ghttp.ServerClientMaxBodySize配置影响: 默认支持的上传文件大小为8MB

服务端

在服务端通过Request对象获取上传文件:

该服务端提供了3个接口:

  1. 地址用于展示单个文件上传的H5页面;
  2. http://127.0.0.1:8199/upload/batch 地址用于展示多个文件上传的H5页面;
  3. 接口用于真实的表单文件上传,该接口同时支持单个文件或者多个文件上传;

关键代码说明

  1. 我们在服务端可以通过r.GetUploadFiles方法获得上传的所有文件对象,也可以通过r.GetUploadFile获取单个上传的文件对象。
  2. 通过files.Save可以将上传的多个文件方便地保存到指定的目录下,并返回保存成功的文件名。如果是批量保存,只要任意一个文件保存失败,都将会立即返回错误。此外,Save方法的第二个参数支持随机自动命名上传文件。
  3. 通过group.POST("/", Upload)注册的路由仅支持POST方式访问。

客户端

注意到了吗?文件上传参数格式使用了 参数名=@file:文件路径 ,HTTP客户端将会自动解析文件路径对应的文件内容并读取提交给服务端。原本复杂的文件上传操作被进行了封装处理,用户只需要使用 @file:+文件路径 来构成参数值即可。其中,文件路径请使用本地文件绝对路径。

首先运行服务端程序之后,我们再运行这个上传客户端(注意修改上传的文件路径为本地真实文件路径),执行后可以看到文件被成功上传到服务器的指定路径下。

多文件上传

首先运行服务端程序之后,我们再运行这个上传客户端(注意修改上传的文件路径为本地真实文件路径),执行后可以看到文件被成功上传到服务器的指定路径下。

自定义文件名称

很简单,修改FileName属性即可。

规范路由接收上传文件

服务端如果通过规范路由方式,那么可以通过结构化的参数获取上传文件:

  • 参数接收的数据类型使用*ghttp.UploadFile
  • 如果需要接口文档也支持文件类型,那么参数的标签中设置为file类型