blob: 3001e3278619b688236f4059bf30bb2a1dffc742 (
plain)
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
|
open Brr
let send_raw
: filename:Jstr.t -> Jstr.t -> unit
= fun ~filename data ->
(* 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
(** Send a file to the user. *)
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 data = Jv.to_jstr @@ Jv.call
(Jv.of_string "data:")
"concat"
[| Jv.of_jstr mime_type
; Jv.of_jstr (Jstr.v ";base64,")
; base64data
|] in
send_raw
~filename
data
|