Skip to content

Lưu và quản lý tệp ​

Lưu qua trình chọn tài liệu của hệ thốngChia sẻ tệp đầu ra qua bảng chia sẻ

Tệp được ghi ở đâu ​

Tạo bởiThư mụcVòng đời
showEditor(), trim()Thư mục Documents của ứng dụng (iOS) / filesDir (Android)Được giữ lại cho đến khi bạn xóa.
getFrameAt(), extractAudio(), compress(), toGif(), merge(), mixAudio()Caches (iOS) / cacheDir (Android)Hệ điều hành có thể tự xóa khi bộ nhớ sắp đầy và ứng dụng không chạy.

Dù tệp được tạo từ đâu, hãy xóa khi dùng xong. Tệp nào muốn giữ lại thì chuyển sang chỗ lưu trữ lâu dài, hoặc lưu bằng một trong các hàm dưới đây.

Lưu và chia sẻ ​

Các hàm này dùng được với đầu ra của mọi API.

Lưu vào thư viện ảnh ​

ts
saveToPhoto(filePath: string): Promise<SaveToPhotoResult>

Lưu ảnh hoặc video vào thư viện ảnh. Loại tệp được nhận diện theo phần mở rộng, nên các khung hình từ getFrameAt() sẽ được lưu dưới dạng ảnh. Cần quyền truy cập thư viện ảnh trên iOS, và quyền bộ nhớ trên Android 9 trở xuống.

ts
import { compress, saveToPhoto } from 'react-native-video-trim';

const { outputPath } = await compress(videoUri, { quality: 'medium' });
const { success } = await saveToPhoto(outputPath);

Lưu qua trình chọn tài liệu ​

ts
saveToDocuments(filePath: string): Promise<SaveToDocumentsResult>

Mở trình chọn tài liệu của hệ thống (UIDocumentPickerViewController trên iOS, Storage Access Framework trên Android) để người dùng chọn nơi lưu tệp.

Chia sẻ ​

ts
share(filePath: string): Promise<ShareResult>

Mở bảng chia sẻ. Trên Android, tệp phải nằm trong thư mục đầu ra của thư viện; mọi tệp đầu ra của thư viện đều đã nằm ở đó.

ts
const { outputPath } = await merge([clip1, clip2]);
const { success } = await share(outputPath);

Trình chỉnh sửa cũng làm được những việc này ngay sau khi lưu, qua saveToPhoto, openDocumentsOnFinish và openShareSheetOnFinish, rồi xóa tệp bằng các tùy chọn removeAfter*. Xem Khi người dùng lưu.

Cả ba hàm đều throw đồng bộ khi filePath rỗng.

Quản lý đầu ra ​

HàmTrả vềMô tả
listFiles()Promise<string[]>Mọi tệp đầu ra trong cả hai thư mục.
cleanFiles()Promise<number>Xóa mọi tệp đầu ra, trả về số tệp đã xóa.
deleteFile(path)Promise<boolean>Xóa một tệp đầu ra. Trên Android, đường dẫn nằm ngoài thư mục đầu ra sẽ bị từ chối và Promise resolve với false.
isValidFile(url)Promise<FileValidationResult>Kiểm tra một tệp có phải là âm thanh hoặc video phát được hay không.
ts
import { cleanFiles, deleteFile, isValidFile, listFiles } from 'react-native-video-trim';

// Kiểm tra trước khi mở trình chỉnh sửa
const { isValid, fileType, duration } = await isValidFile(uri);
if (!isValid) {
  console.warn('Not a playable media file');
}

// Xóa một tệp
await deleteFile(outputPath);

// Dọn dẹp định kỳ, ví dụ khi ứng dụng khởi động
const files = await listFiles();
const removed = await cleanFiles();
console.log(`Removed ${removed} of ${files.length} files`);

isValidFile() resolve với một object, không phải boolean. Hãy kiểm tra isValid; fileType là 'video', 'audio' hoặc 'unknown', còn duration tính bằng mili giây (-1 khi không hợp lệ).

Phát hành theo giấy phép MIT.