v2 / examples / veb / file_upload / file_uploading.v
46 lines · 37 sloc · 793 bytes · 5d91447d09493d073ae7b8cb1c45a4a00de9222d
Raw
1module main
2
3import net.http
4import veb
5
6const port = 8082
7
8struct App {
9}
10
11struct Context {
12 veb.Context
13}
14
15fn uploaded_file_contents(fdata []http.FileData) []veb.RawHtml {
16 mut files := []veb.RawHtml{}
17 for data in fdata {
18 files << data.data.replace_each(['\n', '<br>', '\n\r', '<br>', '\t', ' ', ' ', ' '])
19 }
20 return files
21}
22
23fn main() {
24 mut app := &App{}
25 veb.run[App, Context](mut app, port)
26}
27
28pub fn (mut app App) index() veb.Result {
29 return $veb.html()
30}
31
32@['/upload'; post]
33pub fn (mut app App) upload() veb.Result {
34 dump(ctx.form)
35 dump(ctx.files)
36 fdata := ctx.files['upfile']
37 files := uploaded_file_contents(fdata)
38 return $veb.html()
39}
40
41@['/submit'; post]
42pub fn (mut app App) submit() veb.Result {
43 dump(ctx.form)
44 form_data := ctx.form.clone()
45 return $veb.html()
46}
47