upload

package module
v2.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 28, 2024 License: MIT Imports: 12 Imported by: 0

README

upload Go license codecov PkgGoDev Go version

处理上传文件,若是图片还可以设置水印。

func(w http.ResponseWriter, r *http.Request) {
    u, err := upload.New("~/uploads/", "2006/01/02/", 1024*1024*10, ".txt", ".jpg", ".png")
    u.SetWatermark(...) // 设置水印图片

    if r.Method="POST"{
        u.Do("files", r) // 执行上传操作
    }
}

安装

go get github.com/issue9/upload

版权

本项目采用 MIT 开源授权许可证,完整的授权说明可在 LICENSE 文件中找到。

Documentation

Overview

Package upload 提供文件上传的功能

处理上传文件,若是图片还可以设置水印。

func(w http.ResponseWriter, r *http.Request) {
   u, err := upload.New("~/uploads/", 1024*1024*10, ".txt", ".jpg", ".png")
   u.SetWatermarkFile(...) // 可根据需要设置水印图片

   if r.Method="POST"{
       u.Do("files", r) // 执行上传操作
   }
}

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ErrNoUploadFile

func ErrNoUploadFile() error

func ErrNotAllowExt

func ErrNotAllowExt() error

func ErrNotAllowSize

func ErrNotAllowSize() error

func Filename

func Filename(dir, s string) string

Filename 在 dir 下为 s 生成唯一文件名

Types

type Upload

type Upload struct {
	// contains filtered or unexported fields
}

Upload 用于处理文件上传

func New

func New(dir, format string, maxSize int64, f func(string, string) string, exts ...string) (*Upload, error)

New 声明一个 Upload 对象

dir 上传文件的保存目录,若目录不存在,则会尝试创建;

format 子目录的格式,只能是时间格式;

maxSize 允许上传文件的最大尺寸,单位为 byte;

f 设置文件名的生成方式,要求文件在同一目录下具有唯一性,其类型如下:

func(dir, filename string) string

dir 为文件夹名称,以 / 结尾,filename 为用户上传的文件名, 返回值是 dir + filename 的路径,实现者可能要调整 filename 的值,以保证在 dir 下唯一;

exts 允许的扩展名,若为空,将不允许任何文件上传。

func (*Upload) Dir

func (u *Upload) Dir() string

Dir 获取上传文件的保存目录

func (*Upload) Do

func (u *Upload) Do(field string, r *http.Request) ([]string, error)

Do 执行上传的操作

若是多文件上传,其中某一个文件不符合要求,会中断后续操作, 但是已经处理成功的也会返回给用户,所以可能会出现两个返回参数都不为 nil 的情况。

返回的是相对于 Upload.Dir() 目录的文件名列表。

func (*Upload) Open

func (u *Upload) Open(name string) (fs.File, error)

func (*Upload) SetWatermark

func (u *Upload) SetWatermark(w *watermark.Watermark)

SetWatermark 设置水印的相关参数

如果 w 为 nil,则表示取消水印

func (*Upload) SetWatermarkFS

func (u *Upload) SetWatermarkFS(fs fs.FS, path string, padding int, pos watermark.Pos) error

SetWatermarkFS 设置水印的相关参数

path 为水印文件的路径; padding 为水印在目标不图像上的留白大小; pos 水印的位置。

func (*Upload) SetWatermarkFile

func (u *Upload) SetWatermarkFile(path string, padding int, pos watermark.Pos) error

SetWatermarkFile 设置水印的相关参数

path 为水印文件的路径; padding 为水印在目标不图像上的留白大小; pos 水印的位置。

Directories

Path Synopsis
简单的 upload 包的示例程序,可以一次上传一个或是多个功能!
简单的 upload 包的示例程序,可以一次上传一个或是多个功能!

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL