rust 陶里|在生产环境中下载/复制文件

3phpmpom  于 2023-04-21  发布在  其他
关注(0)|答案(1)|浏览(175)

我有下面的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文件夹的特定路径,但安装的可执行文件没有任何兄弟文件夹。
我可能是在做错误的方法来将文件从应用程序复制/下载到用户系统。
我只想将文件复制到生产捆绑包中所需的文件夹。

dojqjjoe

dojqjjoe1#

对于任何有同样问题的新手来说,我的问题只通过将此配置添加到tauri. config中来解决。
https://tauri.app/v1/api/config/#bundleconfig.resources
然后,我从src中取出assets文件夹,转到根src-tauri文件夹。
将javascript调用更改为:

const source = ".\\assets\\diot_template.xlsx";

现在,它正在工作。

相关问题