File: upload.k

package info (click to toggle)
kaya 0.4.4-6.2
  • links: PTS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 5,200 kB
  • ctags: 2,015
  • sloc: cpp: 9,556; haskell: 7,253; sh: 3,060; yacc: 910; makefile: 816; perl: 90
file content (56 lines) | stat: -rw-r--r-- 1,817 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
webapp upload;

import System;
import HTMLDocument;
import Webapp;

// files uploaded to HTTP_KAYA_UPLOAD_DIR environment variable, or
// "." unless we set the location in webconfig() which you should do before
// actually using this code!

Void webconfig() {
  allowFileUploads();
  // setKayaUploadDir("/users/myaccount/tmp");
}

HTMLDocument webmain() {
  enableDebugging();
  doc = new(HTML4Strict,"File upload test");
  
  appendExisting(doc.body,runHandler(@uploadForm));

  return doc;
}

ElementTree uploadForm() {
  div = anonymousBlock;
  form = addLocalForm(div,true);
  f1 = addFieldset(form,"Upload a file");
  void(addTextInput(f1,InputText,"input1","",30));
  void(addTextInput(f1,InputText,"input2","",30));
  void(addTextInput(f1,InputText,"input2","",30));
  void(addTextInput(f1,InputFile,"input3","",30));
  void(addTextInput(f1,InputFile,"input3","",30));
  void(addTextInput(f1,InputText,"input4","",30));
  void(addTextInput(f1,InputFile,"input5","",30));
  void(addTextInput(f1,InputText,"input6","",30));
  void(addLocalControlInput(f1,"Submit",processUpload@(),1));
  return form;
}

ElementTree processUpload(Int discard) {
  div = anonymousBlock;
  void(addParagraph(div,"I1: "+incomingValue("input1",DataPost)));
  void(addParagraph(div,"I2: "+incomingData("input2",DataPost)[0]));
  void(addParagraph(div,"I2: "+incomingData("input2",DataPost)[1]));
  void(addParagraph(div,"I4: "+incomingValue("input4",DataPost)));
  void(addParagraph(div,"I6: "+incomingValue("input6",DataPost)));
  files = incomingFiles("input3");
  push(files,incomingFile("input5"));
  for file in files {
    void(addParagraph(div,"File: "+originalName(file)+" is at "+tempPath(file)+" of type "+contentType(file)));
  }
  // and at this point you could copy them, read them into databases, etc.

  return div;
}