注意哦:上传文件大小受到ghttp.Server
的ClientMaxBodySize
配置影响:https://pkg.go.dev/github.com/gogf/gf/v2/net/ghttp#ServerConfig 默认支持的上传文件大小为8MB
。
服务端
该服务端提供了3个接口:
- http://127.0.0.1:8199/upload/show 地址用于展示单个文件上传的H5页面;
- 地址用于展示多个文件上传的H5页面;
- http://127.0.0.1:8199/upload 接口用于真实的表单文件上传,该接口同时支持单个文件或者多个文件上传;
关键代码说明
- 在中的参数
"upload-file"
为本示例中客户端上传时的表单文件域名称,开发者可以根据前后端约定在客户端中定义,以方便服务端接收表单文件域参数。 - 通过
files.Save
可以将上传的多个文件方便地保存到指定的目录下,并返回保存成功的文件名。如果是批量保存,只要任意一个文件保存失败,都将会立即返回错误。此外,Save
方法的第二个参数支持随机自动命名上传文件。 - 通过
group.POST("/", Upload)
注册的路由仅支持POST
方式访问。
客户端
注意到了吗?文件上传参数格式使用了 ,HTTP客户端将会自动解析文件路径对应的文件内容并读取提交给服务端。原本复杂的文件上传操作被gf
进行了封装处理,用户只需要使用 @file:+文件路径
来构成参数值即可。其中,文件路径
请使用本地文件绝对路径。
多文件上传
可以看到,多个文件上传提交参数格式为参数名=@file:xxx&参数名=@file:xxx...
,也可以使用参数名[]=@file:xxx&参数名[]=@file:xxx...
的形式。
首先运行服务端程序之后,我们再运行这个上传客户端(注意修改上传的文件路径为本地真实文件路径),执行后可以看到文件被成功上传到服务器的指定路径下。