diff options
| author | Shulhan <ms@kilabit.info> | 2024-02-05 03:21:53 +0700 |
|---|---|---|
| committer | Shulhan <ms@kilabit.info> | 2024-02-05 03:23:00 +0700 |
| commit | f2cfe0de0eeec8bc7abf9d754b9e89681743ecff (patch) | |
| tree | 802e8a32102a6786b4461e35b916d05b040558d0 /key_form_input.go | |
| parent | f02e4647bae78222196dc06406b5024c1b435bd7 (diff) | |
| download | gorankusu-f2cfe0de0eeec8bc7abf9d754b9e89681743ecff.tar.xz | |
all: implement form input file
The FormInput now can be set to FormInputKindFile that will rendered
as "<input type='file' ...>" on the web user interface.
Once submitted, the file name, type, size, and lastModification will
be stored under FormInput Filename, Filetype, Filesize, and Filemodms.
Implements: https://todo.sr.ht/~shulhan/trunks/1
Diffstat (limited to 'key_form_input.go')
| -rw-r--r-- | key_form_input.go | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/key_form_input.go b/key_form_input.go index afcbce7..8cceba8 100644 --- a/key_form_input.go +++ b/key_form_input.go @@ -6,11 +6,24 @@ package trunks import ( "net/http" "net/url" + "strconv" "strings" "github.com/shuLhan/share/lib/math/big" ) +// List of additional parameters to be generated and send if the [FormInput] +// Kind is [FormInputKindFile]. +// +// Caller can changes the name by using [FormInput] FormDataName. +const ( + FormDataFilecontent = `filecontent` + FormDataFilemodms = `filemodms` + FormDataFilename = `filename` + FormDataFilesize = `filesize` + FormDataFiletype = `filetype` +) + // KeyFormInput is the simplified type for getting and setting HTTP headers // and request parameters (either in query or in the parameter body). type KeyFormInput map[string]FormInput @@ -64,7 +77,28 @@ func (kfi KeyFormInput) ToMultipartFormData() (data map[string][]byte) { return data } for k, fi := range kfi { - data[k] = []byte(fi.Value) + if fi.Kind == FormInputKindFile { + var name string + + if len(fi.Filename) != 0 { + name = fi.FormDataName(FormDataFilename) + data[name] = []byte(fi.Filename) + } + if len(fi.Filetype) != 0 { + name = fi.FormDataName(FormDataFiletype) + data[name] = []byte(fi.Filetype) + } + name = fi.FormDataName(FormDataFilesize) + data[name] = []byte(strconv.FormatInt(fi.Filesize, 10)) + + name = fi.FormDataName(FormDataFilemodms) + data[name] = []byte(strconv.FormatInt(fi.Filemodms, 10)) + + name = fi.FormDataName(FormDataFilecontent) + data[name] = []byte(fi.Value) + } else { + data[k] = []byte(fi.Value) + } } return data } |
