LeCodesdocs

Файлы и шеринг

Как заводить файлы в приложение и отдавать их: openFilePicker открывает нативный пикер хоста и разрешается в хэндл(ы) File; share отдаёт медиафайл в системную шторку шеринга.

Обзор

TypeScript
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

TypeScript
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').

TypeScript
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

TypeScript
share(media: File | FetchResponse, text?: string): void

Поделиться медиафайлом (изображение/видео) через системную шторку шеринга. media — это File из пикера/камеры или скачанный FetchResponse; text — необязательная подпись/сообщение. Выстрелил и забыл — результат не возвращается.

Поведение по платформам:

  • iOS — открывает шторку шеринга; она также позволяет сохранить в Файлы/Фото.
  • web — сохраняет (скачивает) файл.
TypeScript
const photo = await CameraViewer.takePhoto()
share(photo, 'Look at this')

Смотрите также

  • Сеть — класс File, FormData, FetchResponse.
  • CameraViewer — другой источник хэндлов File.