Documentation
¶
Overview ¶
Package upload 提供文件上传的功能
处理上传文件,若是图片还可以设置水印。
s, err := NewLocalSaver(os.OpenRoot("~/uploads/"), "2006/01/02/", nil) u := upload.New(s, 1024*1024*10, ".txt", ".jpg", ".png") u.SetWatermarkFile(...) // 可根据需要设置水印图片 func(w http.ResponseWriter, r *http.Request) { if r.Method="POST"{ u.Do("files", r) // 执行上传操作 } }
Index ¶
- Constants
- func AllowWatermarkExts() []string
- func ErrNoUploadFile() error
- func ErrNotAllowExt() error
- func ErrNotAllowSize() error
- func Filename(dir fs.FS, s, ext string) string
- type Deleter
- type Saver
- type Upload
- func (u *Upload) Do(field string, r *http.Request) ([]string, error)
- func (u *Upload) Open(name string) (fs.File, error)
- func (u *Upload) SetWatermark(w *watermark.Watermark)
- func (u *Upload) SetWatermarkFS(fs fs.FS, path string, padding int, pos watermark.Pos) error
- func (u *Upload) SetWatermarkFile(path string, padding int, pos watermark.Pos) error
Constants ¶
View Source
const ( None = "" Year = "2006/" Month = "2006/01/" Day = "2006/01/02/" )
为 New 的参数 format 所允许的几种取值
Variables ¶
This section is empty.
Functions ¶
func ErrNoUploadFile ¶
func ErrNoUploadFile() error
func ErrNotAllowExt ¶
func ErrNotAllowExt() error
func ErrNotAllowSize ¶
func ErrNotAllowSize() error
Types ¶
type Deleter ¶
type Deleter interface { Saver // Delete 删除文件 // // filename 由 [Saver.Save] 返回的内容。 Delete(filename string) error }
Deleter 实现了删除功能的 Saver
func NewLocalSaver ¶
func NewLocalSaver(root *os.Root, baseURL, format string, f func(dir fs.FS, filename, ext string) string) (Deleter, error)
NewLocalSaver 实现了一个基于本地文件系统的 Saver 接口
root 上传文件的保存目录;
baseURL 为上传的文件生成访问地址的前缀;
format 子目录的格式,只能是时间格式,取值只能是 None、Year、Month 和 Day;
f 设置文件名的生成方式,要求文件在同一目录下具有唯一性,其类型如下:
func(dir fs.FS, filename, ext string) string
dir 为所属的文件系统,filename 为文件名部分,可能包含部分目录名称,ext 为 filename 中的扩展名部分, 返回值是修正后的 filename,实现者需要保证 filename 在 dir 下是唯一的,filename 的路径分隔符必须是 /,不随系统而改变。 如果为空,则会采用 Filename 作为默认值;
type Saver ¶
type Saver interface { fs.FS // Save 保存用户上传的文件 // // filename 为用户上传时的文件名,包含扩展名部分; // ext 为 filename 中的扩展名部分; // 返回该文件对应的唯一标记。 Save(file multipart.File, filename string, ext string) (string, error) }
Saver 定义了用于保存上传内容的接口
type Upload ¶
type Upload struct {
// contains filtered or unexported fields
}
Upload 用于处理文件上传
func (*Upload) Do ¶
Do 执行上传的操作
field 表示用于上传的字段名称;
NOTE: 若是多文件上传,其中某一个文件不符合要求,会中断后续操作, 但是已经处理成功的也会返回给用户,所以可能会出现两个返回参数都不为 nil 的情况。
func (*Upload) SetWatermarkFS ¶
SetWatermarkFS 设置水印的相关参数
path 为水印文件的路径; padding 为水印在目标不图像上的留白大小; pos 水印的位置;
Click to show internal directories.
Click to hide internal directories.