【问题标题】:File does not save in download folder文件未保存在下载文件夹中
【发布时间】:2021-10-01 09:43:34
【问题描述】:

我想将 JSON 数据对象导出为 csv 文件并将其保存在下载文件夹中,但我不确定文件保存在何处或是否已保存。当我检查它写成file:///data/user/0/host.exp.exponent/files/ExperienceData/UNVERIFIED-192.168.1.14-csvproject/test.csv 的路径时,当我检查FileSystem.writeAsStringAsync(path,csv,{ encoding: FileSystem.EncodingType.UTF8 }) 它返回为

承诺{ “_U”:0, “_V”:1, “_W”:空, “_X”:空, }

CSV=async()=>{
        var data = this.state.results
        var headers = 'Transaction ID, Title, Amount, Category, Note, Date'
        var csv = `${headers}${data}`;
                
        var path = FileSystem.documentDirectory+"test.csv";
        var { status } = await MediaLibrary.requestPermissionsAsync();
        console.log("status:", status)
        if (status === "granted") {
        
       FileSystem.writeAsStringAsync(path,csv,{ encoding: FileSystem.EncodingType.UTF8 })
       var asset = await MediaLibrary.createAssetAsync(path)
       await MediaLibrary.createAlbumAsync("Download", asset, false)
        
            
            console.log(`wrote file ${path}`);
            
        }
       
    }

【问题讨论】:

    标签: javascript react-native expo export-to-csv


    【解决方案1】:

    你没有使用 await 并且它返回 promise 对象而不是 promise 响应

    await FileSystem.writeAsStringAsync(path,csv,{ encoding: FileSystem.EncodingType.UTF8 })
    

    然后当你执行 CSV fn 时

    await CVS();
    

    【讨论】:

    • 如果我在 onPress 时执行该功能,我也必须使用 await 吗?
    • 否,但它会在此处理程序中始终作为最后一个执行
    • 我刚试过但不知道文件是否写了我找不到保存为文件夹的文件是空的
    • 感谢 Dawid 关于“等待”的提醒,我花了一些时间查看“_U”等并想知道发生了什么(在我的情况下,它使用 FileSystem.uploadAsync 但相同的解决方案适用)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 2020-09-09
    • 2021-08-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多