我有下面的tauri命令用于常规文件复制:
// main.rs
#[tauri::command]
fn copy_file(source: &str, destination: &str) {
match std::fs::copy(source, destination.to_owned()) {
Ok(_) => println!("Ok"),
Err(err) => println!("{}", err),
};
}
这个功能在前端。
async function downloadTemplate() {
const destination = await scripts.handleSelectFolder("Select folder")
const fullDestination = destination + "\\template.xlsx";
const source = ".\\src\\assets\\template.xlsx";
await invoke('copy_file', { source, destination: fullDestination });
// openDirectory calls a Tauri command too to open a folder
await openDirectory(destination);
}
该流程用于将名为template.xlsx
的文件从项目文件夹复制到所需的用户选择。
项目中的template.xlsx位于以下位置:
frontend_project_files...
...
src-tauri/
src/
main.rs
assets/
diot_template.xlsx
这种实现在开发中运行得很好,但在生产中,没有复制任何文件,但文件夹会正确打开。
我使用MSI来安装我的应用程序,安装文件夹看起来像这样:
我认为问题可能是命令期望是template.xslx
文件夹的特定路径,但安装的可执行文件没有任何兄弟文件夹。
我可能是在做错误的方法来将文件从应用程序复制/下载到用户系统。
我只想将文件复制到生产捆绑包中所需的文件夹。
1条答案
按热度按时间dojqjjoe1#
对于任何有同样问题的新手来说,我的问题只通过将此配置添加到tauri. config中来解决。
https://tauri.app/v1/api/config/#bundleconfig.resources
然后,我从src中取出assets文件夹,转到根src-tauri文件夹。
将javascript调用更改为:
现在,它正在工作。