mirror of
https://github.com/pocketbase/pocketbase.git
synced 2024-12-03 19:26:50 +02:00
40 lines
997 B
Go
40 lines
997 B
Go
package rest
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"github.com/pocketbase/pocketbase/tools/filesystem"
|
|
)
|
|
|
|
// DefaultMaxMemory defines the default max memory bytes that
|
|
// will be used when parsing a form request body.
|
|
const DefaultMaxMemory = 32 << 20 // 32mb
|
|
|
|
// FindUploadedFiles extracts all form files of "key" from a http request
|
|
// and returns a slice with filesystem.File instances (if any).
|
|
func FindUploadedFiles(r *http.Request, key string) ([]*filesystem.File, error) {
|
|
if r.MultipartForm == nil {
|
|
err := r.ParseMultipartForm(DefaultMaxMemory)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
}
|
|
|
|
if r.MultipartForm == nil || r.MultipartForm.File == nil || len(r.MultipartForm.File[key]) == 0 {
|
|
return nil, http.ErrMissingFile
|
|
}
|
|
|
|
result := make([]*filesystem.File, 0, len(r.MultipartForm.File[key]))
|
|
|
|
for _, fh := range r.MultipartForm.File[key] {
|
|
file, err := filesystem.NewFileFromMultipart(fh)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
result = append(result, file)
|
|
}
|
|
|
|
return result, nil
|
|
}
|