paiagram/rw_data/
write.rs1#[cfg(not(target_arch = "wasm32"))]
2pub async fn write_file(data: Vec<u8>, filename: String) -> Result<(), std::io::Error> {
3 let file = rfd::AsyncFileDialog::new()
4 .set_file_name(&filename)
5 .save_file()
6 .await;
7 if let Some(file) = file {
8 file.write(&data).await?;
9 bevy::log::info!("File saved to {:?}", file.path());
10 }
11 Ok(())
12}
13
14#[cfg(target_arch = "wasm32")]
15use wasm_bindgen::prelude::wasm_bindgen;
16
17#[cfg(target_arch = "wasm32")]
18#[wasm_bindgen(inline_js = r#"
19export function download_text_file(data, filename) {
20 const blob = new Blob([data], { type: 'text/plain' });
21 const url = URL.createObjectURL(blob);
22 const a = document.createElement('a');
23 a.href = url;
24 a.download = filename;
25 a.click();
26 URL.revokeObjectURL(url);
27}
28"#)]
29extern "C" {
30 fn download_text_file(data: &[u8], filename: &str);
31}
32
33#[cfg(target_arch = "wasm32")]
35pub async fn write_file(data: Vec<u8>, filename: String) -> Result<(), String> {
36 download_text_file(&data, &filename);
37 Ok(())
38}