Documentation
¶
Index ¶
- Variables
- func NewFileFS(client *s3.Client, bucket string) fs.FS
- func RandomName(file *multipart.FileHeader, paths ...string) (string, error)
- func ValidateFile(file *multipart.FileHeader) error
- func ValidateFileContent(content []byte) error
- func ValidateThumbnailSizes(sizes []ThumbnailSize) error
- type AWSProvider
- func (p *AWSProvider) AbortChunked(ctx context.Context, session *ChunkSession) error
- func (p *AWSProvider) CompleteChunked(ctx context.Context, session *ChunkSession) (*FileMeta, error)
- func (p *AWSProvider) CreatePresignedPost(ctx context.Context, key string, metadata *Metadata) (*PresignedPost, error)
- func (p *AWSProvider) DeleteFile(ctx context.Context, path string) error
- func (p *AWSProvider) GetFile(ctx context.Context, path string) ([]byte, error)
- func (p *AWSProvider) GetPresignedURL(ctx context.Context, path string, ttl time.Duration) (string, error)
- func (p *AWSProvider) InitiateChunked(ctx context.Context, session *ChunkSession) (*ChunkSession, error)
- func (p *AWSProvider) UploadChunk(ctx context.Context, session *ChunkSession, index int, payload io.Reader) (ChunkPart, error)
- func (p *AWSProvider) UploadFile(ctx context.Context, path string, content []byte, opts ...UploadOption) (string, error)
- func (p *AWSProvider) Validate(ctx context.Context) error
- func (p *AWSProvider) WithBasePath(basePath string) *AWSProvider
- func (p *AWSProvider) WithLogger(logger Logger) *AWSProvider
- type AsyncCallbackExecutor
- type CallbackExecutor
- type CallbackMode
- type ChunkPart
- type ChunkSession
- type ChunkSessionState
- type ChunkSessionStore
- func (s *ChunkSessionStore) AddPart(id string, part ChunkPart) (*ChunkSession, error)
- func (s *ChunkSessionStore) CleanupExpired(now time.Time) []string
- func (s *ChunkSessionStore) Create(session *ChunkSession) (*ChunkSession, error)
- func (s *ChunkSessionStore) Delete(id string)
- func (s *ChunkSessionStore) Get(id string) (*ChunkSession, bool)
- func (s *ChunkSessionStore) MarkAborted(id string) (*ChunkSession, error)
- func (s *ChunkSessionStore) MarkCompleted(id string) (*ChunkSession, error)
- type ChunkedUploader
- type DefaultLogger
- type FSProvider
- func (p *FSProvider) AbortChunked(_ context.Context, session *ChunkSession) error
- func (p *FSProvider) CompleteChunked(_ context.Context, session *ChunkSession) (*FileMeta, error)
- func (p *FSProvider) CreatePresignedPost(context.Context, string, *Metadata) (*PresignedPost, error)
- func (p *FSProvider) DeleteFile(ctx context.Context, path string) error
- func (p *FSProvider) GetFile(ctx context.Context, path string) ([]byte, error)
- func (p *FSProvider) GetPresignedURL(ctx context.Context, path string, _ time.Duration) (string, error)
- func (p *FSProvider) InitiateChunked(_ context.Context, session *ChunkSession) (*ChunkSession, error)
- func (p *FSProvider) UploadChunk(_ context.Context, session *ChunkSession, index int, payload io.Reader) (ChunkPart, error)
- func (p *FSProvider) UploadFile(ctx context.Context, path string, content []byte, opts ...UploadOption) (string, error)
- func (p *FSProvider) Validate(ctx context.Context) error
- func (p *FSProvider) WithFS(f fs.FS) *FSProvider
- func (p *FSProvider) WithLogger(l Logger) *FSProvider
- func (p *FSProvider) WithURLPrefix(prefix string) *FSProvider
- type FileMeta
- type ImageMeta
- type ImageProcessor
- type LocalImageProcessor
- type Logger
- type Manager
- func (m *Manager) AbortChunked(ctx context.Context, sessionID string) error
- func (m *Manager) CompleteChunked(ctx context.Context, sessionID string) (*FileMeta, error)
- func (m *Manager) ConfirmPresignedUpload(ctx context.Context, result *PresignedUploadResult) (*FileMeta, error)
- func (m *Manager) CreatePresignedPost(ctx context.Context, key string, opts ...UploadOption) (*PresignedPost, error)
- func (m *Manager) DeleteFile(ctx context.Context, path string) error
- func (m *Manager) GetFile(ctx context.Context, path string) ([]byte, error)
- func (m *Manager) GetPresignedURL(ctx context.Context, path string, expires time.Duration) (string, error)
- func (m *Manager) HandleFile(ctx context.Context, file *multipart.FileHeader, path string) (*FileMeta, error)
- func (m *Manager) HandleImageWithThumbnails(ctx context.Context, file *multipart.FileHeader, path string, ...) (*ImageMeta, error)
- func (m *Manager) InitiateChunked(ctx context.Context, key string, totalSize int64, opts ...UploadOption) (*ChunkSession, error)
- func (m *Manager) UploadChunk(ctx context.Context, sessionID string, index int, payload io.Reader) error
- func (m *Manager) UploadFile(ctx context.Context, path string, content []byte, opts ...UploadOption) (string, error)
- func (m *Manager) ValidateProvider(ctx context.Context) error
- type Metadata
- type MultiProvider
- func (m *MultiProvider) AbortChunked(ctx context.Context, session *ChunkSession) error
- func (m *MultiProvider) CompleteChunked(ctx context.Context, session *ChunkSession) (*FileMeta, error)
- func (m *MultiProvider) CreatePresignedPost(ctx context.Context, key string, metadata *Metadata) (*PresignedPost, error)
- func (m *MultiProvider) DeleteFile(ctx context.Context, path string) error
- func (m *MultiProvider) GetFile(ctx context.Context, path string) ([]byte, error)
- func (m *MultiProvider) GetPresignedURL(ctx context.Context, path string, expires time.Duration) (string, error)
- func (m *MultiProvider) InitiateChunked(ctx context.Context, session *ChunkSession) (*ChunkSession, error)
- func (m *MultiProvider) UploadChunk(ctx context.Context, session *ChunkSession, index int, payload io.Reader) (ChunkPart, error)
- func (m *MultiProvider) UploadFile(ctx context.Context, path string, content []byte, opts ...UploadOption) (string, error)
- func (m *MultiProvider) Validate(ctx context.Context) error
- func (p *MultiProvider) WithLogger(l Logger) *MultiProvider
- type Option
- func WithCallbackExecutor(exec CallbackExecutor) Option
- func WithCallbackMode(mode CallbackMode) Option
- func WithChunkPartSize(size int64) Option
- func WithChunkSessionStore(store *ChunkSessionStore) Option
- func WithImageProcessor(processor ImageProcessor) Option
- func WithLogger(l Logger) Option
- func WithOnUploadComplete(cb UploadCallback) Option
- func WithProvider(p Uploader) Option
- func WithProviderValidationContext(ctx context.Context) Option
- func WithValidator(v *Validator) Option
- type PresignedPost
- type PresignedPoster
- type PresignedUploadResult
- type ProviderValidator
- type ThumbnailSize
- type UploadCallback
- type UploadOption
- type Uploader
- type Validator
- func (u *Validator) IsAllowedMimeType(mime string) bool
- func (u *Validator) MaxFileSize() int64
- func (u *Validator) RandomName(file *multipart.FileHeader, paths ...string) (string, error)
- func (u *Validator) ValidateFile(file *multipart.FileHeader) error
- func (u *Validator) ValidateFileContent(content []byte) error
- type ValidatorOption
Constants ¶
This section is empty.
Variables ¶
var ( // DefaultChunkSessionTTL is the fallback expiration applied to chunked upload sessions // when a custom TTL is not provided. DefaultChunkSessionTTL = 30 * time.Minute // DefaultChunkPartSize defines the default size (bytes) used for chunked uploads when // callers do not provide a custom size. DefaultChunkPartSize int64 = 5 * 1024 * 1024 // DefaultPresignedPostTTL controls how long presigned posts remain valid when a custom TTL is not supplied. DefaultPresignedPostTTL = 15 * time.Minute // MaxPresignedPostTTL caps presigned post lifetimes to avoid long-lived public upload surfaces. MaxPresignedPostTTL = 24 * time.Hour // DefaultPresignedURLTTL determines how long confirmation URLs remain valid when returned via ConfirmPresignedUpload. DefaultPresignedURLTTL = 10 * time.Minute // DefaultPresignedMaxFileSize enforces the default max payload accepted via presigned uploads (matches validator default). DefaultPresignedMaxFileSize = DefaultMaxFileSize )
var ( ErrImageNotFound = gerrors.New("image not found", gerrors.CategoryNotFound). WithCode(404). WithTextCode("IMAGE_NOT_FOUND") ErrPermissionDenied = gerrors.New("permission denied", gerrors.CategoryAuthz). WithCode(403). WithTextCode("PERMISSION_DENIED") ErrInvalidPath = gerrors.New("invalid path", gerrors.CategoryBadInput). WithCode(400). WithTextCode("INVALID_PATH") ErrProviderNotConfigured = gerrors.New("provider not configured", gerrors.CategoryInternal). WithCode(500). WithTextCode("PROVIDER_NOT_CONFIGURED") ErrNotImplemented = gerrors.New("feature not implemented", gerrors.CategoryInternal). WithCode(501). WithTextCode("NOT_IMPLEMENTED") ErrChunkSessionNotFound = gerrors.New("chunk session not found", gerrors.CategoryNotFound). WithCode(404). WithTextCode("CHUNK_SESSION_NOT_FOUND") ErrChunkSessionExists = gerrors.New("chunk session already exists", gerrors.CategoryConflict). WithCode(409). WithTextCode("CHUNK_SESSION_EXISTS") ErrChunkSessionClosed = gerrors.New("chunk session is no longer active", gerrors.CategoryConflict). WithCode(409). WithTextCode("CHUNK_SESSION_CLOSED") ErrChunkPartOutOfRange = gerrors.New("chunk part index is out of range", gerrors.CategoryBadInput). WithCode(400). WithTextCode("CHUNK_PART_OUT_OF_RANGE") ErrChunkPartDuplicate = gerrors.New("chunk part already uploaded", gerrors.CategoryConflict). WithCode(409). WithTextCode("CHUNK_PART_DUPLICATE") )
var ( DefaultMaxFileSize int64 = 25 * 1024 * 1024 AllowedImageFormats = map[string]bool{ ".jpg": true, ".jpeg": true, ".png": true, ".gif": true, ".webp": true, ".bmp": true, ".tiff": true, ".svg": true, } AllowedImageMimeTypes = map[string]bool{ "image/jpeg": true, "image/png": true, "image/gif": true, "image/webp": true, "image/bmp": true, "image/tiff": true, "image/svg+xml": true, "image/pdf": true, } )
Functions ¶
func RandomName ¶
func RandomName(file *multipart.FileHeader, paths ...string) (string, error)
func ValidateFile ¶
func ValidateFile(file *multipart.FileHeader) error
func ValidateFileContent ¶
func ValidateThumbnailSizes ¶ added in v0.3.0
func ValidateThumbnailSizes(sizes []ThumbnailSize) error
ValidateThumbnailSizes ensures the configured derivatives are viable.
Types ¶
type AWSProvider ¶
type AWSProvider struct {
// contains filtered or unexported fields
}
func NewAWSProvider ¶
func NewAWSProvider(client *s3.Client, bucket string) *AWSProvider
func (*AWSProvider) AbortChunked ¶ added in v0.3.0
func (p *AWSProvider) AbortChunked(ctx context.Context, session *ChunkSession) error
func (*AWSProvider) CompleteChunked ¶ added in v0.3.0
func (p *AWSProvider) CompleteChunked(ctx context.Context, session *ChunkSession) (*FileMeta, error)
func (*AWSProvider) CreatePresignedPost ¶ added in v0.3.0
func (p *AWSProvider) CreatePresignedPost(ctx context.Context, key string, metadata *Metadata) (*PresignedPost, error)
func (*AWSProvider) DeleteFile ¶
func (p *AWSProvider) DeleteFile(ctx context.Context, path string) error
func (*AWSProvider) GetPresignedURL ¶
func (*AWSProvider) InitiateChunked ¶ added in v0.3.0
func (p *AWSProvider) InitiateChunked(ctx context.Context, session *ChunkSession) (*ChunkSession, error)
func (*AWSProvider) UploadChunk ¶ added in v0.3.0
func (p *AWSProvider) UploadChunk(ctx context.Context, session *ChunkSession, index int, payload io.Reader) (ChunkPart, error)
func (*AWSProvider) UploadFile ¶
func (p *AWSProvider) UploadFile(ctx context.Context, path string, content []byte, opts ...UploadOption) (string, error)
func (*AWSProvider) Validate ¶ added in v0.2.0
func (p *AWSProvider) Validate(ctx context.Context) error
func (*AWSProvider) WithBasePath ¶
func (p *AWSProvider) WithBasePath(basePath string) *AWSProvider
func (*AWSProvider) WithLogger ¶
func (p *AWSProvider) WithLogger(logger Logger) *AWSProvider
type AsyncCallbackExecutor ¶ added in v0.3.0
type AsyncCallbackExecutor struct {
// contains filtered or unexported fields
}
func NewAsyncCallbackExecutor ¶ added in v0.3.0
func NewAsyncCallbackExecutor(logger Logger) *AsyncCallbackExecutor
func (*AsyncCallbackExecutor) Execute ¶ added in v0.3.0
func (e *AsyncCallbackExecutor) Execute(ctx context.Context, cb UploadCallback, meta *FileMeta) error
type CallbackExecutor ¶ added in v0.3.0
type CallbackExecutor interface {
Execute(ctx context.Context, cb UploadCallback, meta *FileMeta) error
}
type CallbackMode ¶ added in v0.3.0
type CallbackMode string
CallbackMode describes how the manager should react when post-upload callbacks fail.
const ( // CallbackModeStrict propagates callback errors back to the caller and should trigger cleanup. CallbackModeStrict CallbackMode = "strict" // CallbackModeBestEffort logs callback failures but still reports success to the caller. CallbackModeBestEffort CallbackMode = "best_effort" )
type ChunkSession ¶ added in v0.3.0
type ChunkSession struct {
ID string
Key string
TotalSize int64
PartSize int64
Metadata *Metadata
CreatedAt time.Time
ExpiresAt time.Time
State ChunkSessionState
UploadedParts map[int]ChunkPart
ProviderData map[string]any
}
ChunkSession keeps track of multipart upload progress and provider-specific details.
type ChunkSessionState ¶ added in v0.3.0
type ChunkSessionState string
ChunkSessionState represents the lifecycle stage of a chunked upload session.
const ( // ChunkSessionStateActive indicates chunks may still be uploaded. ChunkSessionStateActive ChunkSessionState = "active" // ChunkSessionStateCompleted is set after the finalization step succeeds. ChunkSessionStateCompleted ChunkSessionState = "completed" // ChunkSessionStateAborted is set when the session is canceled by the client or due to errors. ChunkSessionStateAborted ChunkSessionState = "aborted" )
type ChunkSessionStore ¶ added in v0.3.0
type ChunkSessionStore struct {
// contains filtered or unexported fields
}
ChunkSessionStore is an in-memory registry backed by a RWMutex. Implementation can be swapped later.
func NewChunkSessionStore ¶ added in v0.3.0
func NewChunkSessionStore(ttl time.Duration) *ChunkSessionStore
NewChunkSessionStore creates a new store with the provided TTL (or DefaultChunkSessionTTL if <= 0).
func (*ChunkSessionStore) AddPart ¶ added in v0.3.0
func (s *ChunkSessionStore) AddPart(id string, part ChunkPart) (*ChunkSession, error)
AddPart registers a chunk part for the given session ID.
func (*ChunkSessionStore) CleanupExpired ¶ added in v0.3.0
func (s *ChunkSessionStore) CleanupExpired(now time.Time) []string
CleanupExpired removes expired sessions and returns their IDs.
func (*ChunkSessionStore) Create ¶ added in v0.3.0
func (s *ChunkSessionStore) Create(session *ChunkSession) (*ChunkSession, error)
Create registers a new chunk upload session.
func (*ChunkSessionStore) Delete ¶ added in v0.3.0
func (s *ChunkSessionStore) Delete(id string)
Delete removes a session from the store.
func (*ChunkSessionStore) Get ¶ added in v0.3.0
func (s *ChunkSessionStore) Get(id string) (*ChunkSession, bool)
Get returns a copy of the session if it exists and has not expired.
func (*ChunkSessionStore) MarkAborted ¶ added in v0.3.0
func (s *ChunkSessionStore) MarkAborted(id string) (*ChunkSession, error)
MarkAborted flags a session as aborted if it is active.
func (*ChunkSessionStore) MarkCompleted ¶ added in v0.3.0
func (s *ChunkSessionStore) MarkCompleted(id string) (*ChunkSession, error)
MarkCompleted flags a session as completed if it is active.
type ChunkedUploader ¶ added in v0.3.0
type ChunkedUploader interface {
InitiateChunked(ctx context.Context, session *ChunkSession) (*ChunkSession, error)
UploadChunk(ctx context.Context, session *ChunkSession, index int, payload io.Reader) (ChunkPart, error)
CompleteChunked(ctx context.Context, session *ChunkSession) (*FileMeta, error)
AbortChunked(ctx context.Context, session *ChunkSession) error
}
type DefaultLogger ¶
type DefaultLogger struct{}
func (*DefaultLogger) Error ¶
func (l *DefaultLogger) Error(msg string, args ...any)
func (*DefaultLogger) Info ¶
func (l *DefaultLogger) Info(msg string, args ...any)
type FSProvider ¶
type FSProvider struct {
// contains filtered or unexported fields
}
func NewFSProvider ¶
func NewFSProvider(base string) *FSProvider
func (*FSProvider) AbortChunked ¶ added in v0.3.0
func (p *FSProvider) AbortChunked(_ context.Context, session *ChunkSession) error
func (*FSProvider) CompleteChunked ¶ added in v0.3.0
func (p *FSProvider) CompleteChunked(_ context.Context, session *ChunkSession) (*FileMeta, error)
func (*FSProvider) CreatePresignedPost ¶ added in v0.3.0
func (p *FSProvider) CreatePresignedPost(context.Context, string, *Metadata) (*PresignedPost, error)
func (*FSProvider) DeleteFile ¶
func (p *FSProvider) DeleteFile(ctx context.Context, path string) error
func (*FSProvider) GetPresignedURL ¶
func (*FSProvider) InitiateChunked ¶ added in v0.3.0
func (p *FSProvider) InitiateChunked(_ context.Context, session *ChunkSession) (*ChunkSession, error)
func (*FSProvider) UploadChunk ¶ added in v0.3.0
func (p *FSProvider) UploadChunk(_ context.Context, session *ChunkSession, index int, payload io.Reader) (ChunkPart, error)
func (*FSProvider) UploadFile ¶
func (p *FSProvider) UploadFile(ctx context.Context, path string, content []byte, opts ...UploadOption) (string, error)
func (*FSProvider) Validate ¶ added in v0.2.0
func (p *FSProvider) Validate(ctx context.Context) error
func (*FSProvider) WithFS ¶
func (p *FSProvider) WithFS(f fs.FS) *FSProvider
func (*FSProvider) WithLogger ¶
func (p *FSProvider) WithLogger(l Logger) *FSProvider
func (*FSProvider) WithURLPrefix ¶
func (p *FSProvider) WithURLPrefix(prefix string) *FSProvider
type ImageProcessor ¶ added in v0.3.0
type LocalImageProcessor ¶ added in v0.3.0
type LocalImageProcessor struct{}
LocalImageProcessor resizes images using a simple nearest-neighbor algorithm.
func NewLocalImageProcessor ¶ added in v0.3.0
func NewLocalImageProcessor() *LocalImageProcessor
type Manager ¶
type Manager struct {
// contains filtered or unexported fields
}
func NewManager ¶
func (*Manager) AbortChunked ¶ added in v0.3.0
func (*Manager) CompleteChunked ¶ added in v0.3.0
func (*Manager) ConfirmPresignedUpload ¶ added in v0.3.0
func (*Manager) CreatePresignedPost ¶ added in v0.3.0
func (m *Manager) CreatePresignedPost(ctx context.Context, key string, opts ...UploadOption) (*PresignedPost, error)
func (*Manager) GetPresignedURL ¶
func (*Manager) HandleFile ¶
func (*Manager) HandleImageWithThumbnails ¶ added in v0.3.0
func (m *Manager) HandleImageWithThumbnails(ctx context.Context, file *multipart.FileHeader, path string, sizes []ThumbnailSize) (*ImageMeta, error)
func (*Manager) InitiateChunked ¶ added in v0.3.0
func (m *Manager) InitiateChunked(ctx context.Context, key string, totalSize int64, opts ...UploadOption) (*ChunkSession, error)
func (*Manager) UploadChunk ¶ added in v0.3.0
func (*Manager) UploadFile ¶
type MultiProvider ¶
type MultiProvider struct {
// contains filtered or unexported fields
}
func NewMultiProvider ¶
func NewMultiProvider(local *FSProvider, objectStore Uploader) *MultiProvider
func (*MultiProvider) AbortChunked ¶ added in v0.3.0
func (m *MultiProvider) AbortChunked(ctx context.Context, session *ChunkSession) error
func (*MultiProvider) CompleteChunked ¶ added in v0.3.0
func (m *MultiProvider) CompleteChunked(ctx context.Context, session *ChunkSession) (*FileMeta, error)
func (*MultiProvider) CreatePresignedPost ¶ added in v0.3.0
func (m *MultiProvider) CreatePresignedPost(ctx context.Context, key string, metadata *Metadata) (*PresignedPost, error)
func (*MultiProvider) DeleteFile ¶
func (m *MultiProvider) DeleteFile(ctx context.Context, path string) error
func (*MultiProvider) GetPresignedURL ¶
func (*MultiProvider) InitiateChunked ¶ added in v0.3.0
func (m *MultiProvider) InitiateChunked(ctx context.Context, session *ChunkSession) (*ChunkSession, error)
func (*MultiProvider) UploadChunk ¶ added in v0.3.0
func (m *MultiProvider) UploadChunk(ctx context.Context, session *ChunkSession, index int, payload io.Reader) (ChunkPart, error)
func (*MultiProvider) UploadFile ¶
func (m *MultiProvider) UploadFile(ctx context.Context, path string, content []byte, opts ...UploadOption) (string, error)
func (*MultiProvider) Validate ¶ added in v0.2.0
func (m *MultiProvider) Validate(ctx context.Context) error
func (*MultiProvider) WithLogger ¶
func (p *MultiProvider) WithLogger(l Logger) *MultiProvider
type Option ¶
type Option func(m *Manager)
func WithCallbackExecutor ¶ added in v0.3.0
func WithCallbackExecutor(exec CallbackExecutor) Option
func WithCallbackMode ¶ added in v0.3.0
func WithCallbackMode(mode CallbackMode) Option
func WithChunkPartSize ¶ added in v0.3.0
func WithChunkSessionStore ¶ added in v0.3.0
func WithChunkSessionStore(store *ChunkSessionStore) Option
func WithImageProcessor ¶ added in v0.3.0
func WithImageProcessor(processor ImageProcessor) Option
func WithLogger ¶
func WithOnUploadComplete ¶ added in v0.3.0
func WithOnUploadComplete(cb UploadCallback) Option
func WithProvider ¶
func WithProviderValidationContext ¶ added in v0.2.0
func WithValidator ¶
type PresignedPost ¶ added in v0.3.0
type PresignedPoster ¶ added in v0.3.0
type PresignedUploadResult ¶ added in v0.3.0
type ProviderValidator ¶ added in v0.2.0
type ThumbnailSize ¶ added in v0.3.0
ThumbnailSize describes a requested derivative output.
type UploadCallback ¶ added in v0.3.0
type UploadOption ¶
type UploadOption func(*Metadata)
func WithCacheControl ¶
func WithCacheControl(c string) UploadOption
func WithContentType ¶
func WithContentType(t string) UploadOption
func WithPublicAccess ¶
func WithPublicAccess(a bool) UploadOption
func WithTTL ¶
func WithTTL(ttl time.Duration) UploadOption
type Uploader ¶
type Uploader interface {
UploadFile(ctx context.Context, path string, content []byte, opts ...UploadOption) (string, error)
GetFile(ctx context.Context, path string) ([]byte, error)
DeleteFile(ctx context.Context, path string) error
GetPresignedURL(ctx context.Context, path string, expires time.Duration) (string, error)
}
type Validator ¶
type Validator struct {
// contains filtered or unexported fields
}
func NewValidator ¶
func NewValidator(opts ...ValidatorOption) *Validator
func (*Validator) IsAllowedMimeType ¶ added in v0.3.0
func (*Validator) MaxFileSize ¶ added in v0.3.0
func (*Validator) RandomName ¶
func (*Validator) ValidateFile ¶
func (u *Validator) ValidateFile(file *multipart.FileHeader) error
func (*Validator) ValidateFileContent ¶
type ValidatorOption ¶
type ValidatorOption func(*Validator)
func WithAllowedImageFormats ¶
func WithAllowedImageFormats(formats map[string]bool) ValidatorOption
func WithAllowedMimeTypes ¶
func WithAllowedMimeTypes(types map[string]bool) ValidatorOption
func WithUploadMaxFileSize ¶
func WithUploadMaxFileSize(size int64) ValidatorOption
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
examples
|
|
|
callbacks
command
|
|
|
chunked
command
|
|
|
presignedpost
command
|
|
|
thumbnails
command
|