使用Expo文件系统将CSV保存为本地文件



我正在使用supabase作为我的存储,我正在请求以CSV形式获得响应,如下所示:

const exportColetasAsCSV = async ( IDs: number[] ) => {
const {data, error} = await supabase
.from('coletas')
.select()
.in('id', IDs)
.csv();
if (error) console.log('Erro exportColetasAsCSV:', error);
return data;
}

我想通过世博会分享(https://docs.expo.dev/versions/latest/sdk/sharing/),但要做到这一点,我需要将其作为本地文件,所以我尝试使用文件系统将其保存在本地(https://docs.expo.dev/versions/latest/sdk/filesystem/),但为了在本地保存它,我只看到了使用http-uri的示例,比如:

FileSystem.downloadAsync(
'http://techslides.com/demos/sample-videos/small.mp4',
FileSystem.documentDirectory + 'small.mp4'
)
.then(({ uri }) => {
Alert.alert(
"App",
uri
);
})

我能把它保存为CSV吗?就像我从supabase收到的响应一样?如果是,如何

我四处搜索,终于成功了!以下是我的制作方法:

const saveFile = async (data) => {
let directoryUri = FileSystem.documentDirectory;
let fileUri = directoryUri + "name.csv";
await FileSystem.writeAsStringAsync(fileUri, data, { encoding: FileSystem.EncodingType.UTF8 });
return fileUri;
};
const shareFile = async (fileUri) => {
const canShare = await Sharing.isAvailableAsync();
// Check if permission granted
if (canShare) {
try{
const res = await Sharing.shareAsync(fileUri);
console.log('shareAsync', res);
return true;
} catch {
return false;
}
} else {
alert("Você precisa dar permissão para Compartilhar.")
}};

最新更新