diff --git a/packages/html/src/file_data.rs b/packages/html/src/file_data.rs
index b15eaab2b..cb1492e30 100644
--- a/packages/html/src/file_data.rs
+++ b/packages/html/src/file_data.rs
@@ -20,6 +20,11 @@ impl FileEngine for SerializedFileEngine {
self.files.keys().cloned().collect()
}
+ async fn file_size(&self, file: &str) -> Option {
+ let file = self.files.get(file)?;
+ Some(file.len() as u64)
+ }
+
async fn read_file(&self, file: &str) -> Option> {
self.files.get(file).cloned()
}
@@ -42,6 +47,9 @@ pub trait FileEngine {
// get a list of file names
fn files(&self) -> Vec;
+ // get the size of a file
+ async fn file_size(&self, file: &str) -> Option;
+
// read a file to bytes
async fn read_file(&self, file: &str) -> Option>;
diff --git a/packages/html/src/native_bind/native_file_engine.rs b/packages/html/src/native_bind/native_file_engine.rs
index 81070bf0d..1301051b2 100644
--- a/packages/html/src/native_bind/native_file_engine.rs
+++ b/packages/html/src/native_bind/native_file_engine.rs
@@ -25,6 +25,11 @@ impl FileEngine for NativeFileEngine {
.collect()
}
+ async fn file_size(&self, file: &str) -> Option {
+ let file = File::open(file).await.ok()?;
+ Some(file.metadata().await.ok()?.len())
+ }
+
async fn read_file(&self, file: &str) -> Option> {
let mut file = File::open(file).await.ok()?;
diff --git a/packages/web/src/file_engine.rs b/packages/web/src/file_engine.rs
index f98f726e2..50968ffe8 100644
--- a/packages/web/src/file_engine.rs
+++ b/packages/web/src/file_engine.rs
@@ -42,6 +42,11 @@ impl FileEngine for WebFileEngine {
.collect()
}
+ async fn file_size(&self, file: &str) -> Option {
+ let file = self.find(file)?;
+ Some(file.size() as u64)
+ }
+
// read a file to bytes
async fn read_file(&self, file: &str) -> Option> {
let file = self.find(file)?;