pub async fn convert_file_src(
file_path: &str,
protocol: Option<&str>,
) -> Result<Url, Error>
Expand description
Convert a device file path to an URL that can be loaded by the webview.
Note that asset:
and https://asset.localhost
must be added to tauri.security.csp
in tauri.conf.json
.
Example CSP value: "csp": "default-src 'self'; img-src 'self' asset: https://asset.localhost"
to use the asset protocol on image sources.
Additionally, asset
must be added to tauri.allowlist.protocol
in tauri.conf.json
and its access scope must be defined on the assetScope
array on the same protocol
object.
@param filePath The file path.
@param protocol The protocol to use. Defaults to asset
. You only need to set this when using a custom protocol.
ยงExample
use tauri_api::path::{app_data_dir, join};
use tauri_api::tauri::convert_file_src;
const app_data_dir_path = app_data_dir().await;
const file_path = join(app_data_dir_path, "assets/video.mp4").await;
const asset_url = convert_file_src(file_path);
let window = web_sys::window().expect("no global `window` exists");
let document = window.document().expect("should have a document on window");
// Manufacture the element we're gonna append
let video = document.get_element_by_id("my-video")?;
let source = document.create_element("source")?;
source.set_attribute("type", "video/mp4")?;
source.set_attribute("src", asset_url.as_str())?;
video.append_child(&val)?;
@return the URL that can be used as source on the webview.