Note: I’m using a translation tool, so there may be some inappropriate expressions.
Overview
This plugin provides functions that create ReadableStream and WritableStream from a file path.
Setup
First, install this plugin to your Tauri project:
src-tauri/Cargo.toml
[]
= "=0.1.0"
Next, register this plugin in your Tauri project:
src-tauri/src/lib.rs
Then, set the APIs and file paths that can be used from the Javascript:
src-tauri/capabilities/*.json
Finally, install the JavaScript Guest bindings using whichever JavaScript package manager you prefer:
# or
# or
NOTE: Please make sure that the Rust-side tauri-plugin-fs-stream and the JavaScript-side tauri-plugin-fs-stream-api versions match exactly.
Usage
import { openReadFileStream, openWriteFileStream } from "tauri-plugin-fs-stream-api";
async function convertFile(
inputPath: string,
outputPath: string,
convertor: TransformStream<Uint8Array<ArrayBuffer>, Uint8Array>
) {
let input: ReadableStream<Uint8Array<ArrayBuffer>> | null = null
let output: WritableStream<Uint8Array> | null = null
try {
input = await openReadFileStream(inputPath)
output = await openWriteFileStream(outputPath)
await input.pipeThrough(convertor).pipeTo(output)
}
catch (e) {
// Ensure streams are closed
await input?.cancel().catch(() => {})
await output?.abort().catch(() => {})
throw e
}
}
License
This project is licensed under either of
- MIT license
- Apache License (Version 2.0)
at your option.