Файлы и шеринг
Как заводить файлы в приложение и отдавать их: openFilePicker открывает нативный пикер хоста и
разрешается в хэндл(ы) File; share отдаёт медиафайл в системную
шторку шеринга.
Обзор
const file = await openFilePicker({ accept: 'image/*' })
if (file) {
const form = new FormData()
form.append('photo', file)
await fetch('https://api.example.com/upload', { method: 'POST', body: form })
}openFilePicker
openFilePicker(options?: { accept?: string, multiple?: false }): Promise<File | null>
openFilePicker(options: { accept?: string, multiple: true }): Promise<File[]>По умолчанию одиночный выбор: разрешается в один File или null, если пользователь отменил. С
multiple: true разрешается в File[] — пустой при отмене, никогда не null. accept фильтрует,
что можно выбрать, та же идея, что у HTML <input accept> ('image/*', '.pdf').
const many = await openFilePicker({ accept: 'image/*', multiple: true })
console.log(`picked ${many.length}`)Возвращаемые хэндлы несут только id / name / size — нет пути и нет прямого доступа к байтам из
JS; байты остаются на стороне хоста. Используй File там, где SDK его принимает: загрузки через
FormData, источники изображений (UIImage(file), Texture2D.load(file)) и share().
share
share(media: File | FetchResponse, text?: string): voidПоделиться медиафайлом (изображение/видео) через системную шторку шеринга. media — это File из
пикера/камеры или скачанный FetchResponse; text — необязательная подпись/сообщение. Выстрелил и
забыл — результат не возвращается.
Поведение по платформам:
- iOS — открывает шторку шеринга; она также позволяет сохранить в Файлы/Фото.
- web — сохраняет (скачивает) файл.
const photo = await CameraViewer.takePhoto()
share(photo, 'Look at this')Смотрите также
- Сеть — класс
File,FormData,FetchResponse. - CameraViewer — другой источник хэндлов
File.