summaryrefslogtreecommitdiff
path: root/bs5/server/api/upload.ml
diff options
context:
space:
mode:
authorpolwex <polwex@sortug.com>2025-06-14 23:30:34 +0700
committerpolwex <polwex@sortug.com>2025-06-14 23:30:34 +0700
commitd8b3e15bec60f58defad13e961f80354d250235d (patch)
tree6a6f9158141bf40ea452a5913d72160362e0c472 /bs5/server/api/upload.ml
aaaaaa
Diffstat (limited to 'bs5/server/api/upload.ml')
-rw-r--r--bs5/server/api/upload.ml37
1 files changed, 37 insertions, 0 deletions
diff --git a/bs5/server/api/upload.ml b/bs5/server/api/upload.ml
new file mode 100644
index 0000000..4ba5fb7
--- /dev/null
+++ b/bs5/server/api/upload.ml
@@ -0,0 +1,37 @@
+(* let home request = *)
+(* <html> *)
+(* <body> *)
+(* <form method="POST" action="/" enctype="multipart/form-data"> *)
+(* <%s! Dream.csrf_tag request %> *)
+(* <input name="files" type="file" multiple> *)
+(* <button>Submit!</button> *)
+(* </form> *)
+(* </body> *)
+(* </html> *)
+
+(* let report files = *)
+(* <html> *)
+(* <body> *)
+(* % files |> List.iter begin fun (name, content) -> *)
+(* % let name = *)
+(* % match name with *)
+(* % | None -> "None" *)
+(* % | Some name -> name *)
+(* % in *)
+(* <p><%s name %>, <%i String.length content %> bytes</p> *)
+(* % end; *)
+(* </body> *)
+(* </html> *)
+
+(* let uploads = *)
+(* [ *)
+
+(* Dream.get "/" (fun request -> *)
+(* Dream.html (home request)); *)
+
+(* Dream.post "/" (fun request -> *)
+(* match%lwt Dream.multipart request with *)
+(* | `Ok ["files", files] -> Dream.html (report files) *)
+(* | _ -> Dream.empty `Bad_Request); *)
+
+(* ] *)