From b0a1f4773e93b902f2429527a15f78e946b30938 Mon Sep 17 00:00:00 2001 From: Evan Almloff Date: Tue, 25 Apr 2023 08:16:11 -0500 Subject: [PATCH] create file upload example --- examples/file_upload.rs | 37 +++++++++++++++++++++++++++++++++++++ packages/desktop/Cargo.toml | 3 ++- 2 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 examples/file_upload.rs diff --git a/examples/file_upload.rs b/examples/file_upload.rs new file mode 100644 index 000000000..c3771f7b0 --- /dev/null +++ b/examples/file_upload.rs @@ -0,0 +1,37 @@ +#![allow(non_snake_case)] +use dioxus::prelude::*; + +fn main() { + dioxus_desktop::launch(App); +} + +fn App(cx: Scope) -> Element { + let files_uploaded: &UseRef> = use_ref(cx, Vec::new); + + cx.render(rsx! { + input { + r#type: "file", + accept: "text/*", + onchange: |evt| { + to_owned![files_uploaded]; + async move { + println!("files uploaded: {:?}", evt); + if let Some(file_engine) = &evt.files { + let files = file_engine.files(); + for file_name in &files { + if let Some(file) = file_engine.read_file_to_string(&file_name).await{ + files_uploaded.write().push(file); + } + } + } + } + }, + } + + ul { + for file in files_uploaded.read().iter() { + li { "{file}" } + } + } + }) +} diff --git a/packages/desktop/Cargo.toml b/packages/desktop/Cargo.toml index 5722a42a2..beb971ca9 100644 --- a/packages/desktop/Cargo.toml +++ b/packages/desktop/Cargo.toml @@ -23,12 +23,13 @@ thiserror = "1.0.30" log = "0.4.14" wry = { version = "0.27.2" } futures-channel = "0.3.21" -tokio = { version = "1.16.1", features = [ +tokio = { version = "1.27", features = [ "sync", "rt-multi-thread", "rt", "time", "macros", + "fs", ], optional = true, default-features = false } webbrowser = "0.8.0" infer = "0.11.0"