【发布时间】:2022-01-26 05:32:17
【问题描述】:
如何传递 File 以在 WebAssembly 内存上下文中读取?
使用 JavaScript 在浏览器中读取文件很容易:
<input class="file-selector" type="file" id="files" name="files[]" />
我能够使用 crate stdweb 引导用 Rust 编写的 WebAssembly 代码,向 DOM 元素添加事件侦听器并启动 FileReader:
let reader = FileReader::new();
let file_input_element: InputElement = document().query_selector(".file-selector").unwrap().unwrap().try_into().unwrap();
file_input_element.add_event_listener(enclose!( (reader, file_input_element) move |event: InputEvent| {
// mystery part
}));
在 JavaScript 中,我会从元素中获取文件并将其传递给阅读器,但是,stdweb 的 API 需要以下签名:
pub fn read_as_array_buffer<T: IBlob>(&self, blob: &T) -> Result<(), TODO>
我不知道如何实现IBlob,而且我确信我在 stdweb API 或我对 WebAssembly/Rust 的理解中遗漏了一些明显的东西。我希望有比converting stuff to UTF-8 更简洁的东西。
【问题讨论】:
-
也许 stdweb 现在没有干净的方式来访问
InputElement.files。 github.com/koute/stdweb/commit/…
标签: javascript rust webassembly