aboutsummaryrefslogtreecommitdiff
path: root/lib/elements/transfert.ml
diff options
context:
space:
mode:
Diffstat (limited to 'lib/elements/transfert.ml')
-rwxr-xr-xlib/elements/transfert.ml22
1 files changed, 22 insertions, 0 deletions
diff --git a/lib/elements/transfert.ml b/lib/elements/transfert.ml
new file mode 100755
index 0000000..ddeecd0
--- /dev/null
+++ b/lib/elements/transfert.ml
@@ -0,0 +1,22 @@
+open Js_of_ocaml
+open Brr
+
+let send
+ : mime_type:Jstr.t -> filename:Jstr.t -> Jstr.t -> unit
+ = fun ~mime_type ~filename content ->
+ let btoa = Jv.get Jv.global "btoa" in
+ let base64data = Jv.apply btoa
+ [| Jv.of_jstr content |] in
+
+ let mime = (Jv.Id.(of_jv @@ to_jv mime_type))
+ and base64 = (Jv.Id.(of_jv @@ to_jv base64data))
+ in
+
+ let data = (Js.string "data:")##concat_3 mime (Js.string ";base64,") base64 in
+
+ (* Create the link to download the the element, and simulate a click on it *)
+ let a = El.a
+ ~at:At.[ href Jv.Id.(of_jv @@ to_jv data)
+ ; v (Jstr.v "download") filename ]
+ [] in
+ El.click a