37 lines
1017 B
JavaScript
37 lines
1017 B
JavaScript
|
import * as MediaLibrary from "expo-media-library";
|
|||
|
import * as FileSystem from "expo-file-system";
|
|||
|
import Toast from "react-native-toast-message";
|
|||
|
|
|||
|
export default async function saveVideo(uri, callback = () => {}) {
|
|||
|
const permission = await MediaLibrary.requestPermissionsAsync();
|
|||
|
if (permission.granted) {
|
|||
|
const timestamp = new Date().getTime();
|
|||
|
const downloadResumable = FileSystem.createDownloadResumable(
|
|||
|
uri,
|
|||
|
FileSystem.cacheDirectory + `${timestamp}.mp4`,
|
|||
|
{},
|
|||
|
callback
|
|||
|
);
|
|||
|
try {
|
|||
|
const res = await downloadResumable.downloadAsync();
|
|||
|
await MediaLibrary.saveToLibraryAsync(res.uri);
|
|||
|
Toast.show({
|
|||
|
type: "success",
|
|||
|
text1: "已保存到相册",
|
|||
|
topOffset: 60,
|
|||
|
});
|
|||
|
return true;
|
|||
|
} catch (err) {
|
|||
|
console.error("FS Err: ", err);
|
|||
|
return false;
|
|||
|
}
|
|||
|
} else {
|
|||
|
Toast.show({
|
|||
|
type: "error",
|
|||
|
text1: "保存失败,请检查APP媒体权限",
|
|||
|
topOffset: 60,
|
|||
|
});
|
|||
|
return false;
|
|||
|
}
|
|||
|
}
|