Скачивание приватного видео inapp реагирует на родное - PullRequest
0 голосов
/ 22 января 2020

Я пытаюсь реализовать что-то в реагировать на нативе: у меня есть URL видео, которое я показываю в компоненте реагировать на нативное видео, как я могу дать кнопку для загрузки того же видео на мобильный, но оно не должно появляться в галерее , Также, если видео является приватным, где могут быть переданы заголовки и как?

Ответы [ 2 ]

2 голосов
/ 22 января 2020

Как скачать любой файл?

Хорошо для скачивания любого файла, например видео, img сначала вам нужно разрешение на чтение и запись во внутреннюю / внешнюю память телефона, а после этого вам нужно встроенный модуль, который может загружать файлы с сервера в локальные папки телефона.

Существуют две наиболее известные библиотеки для загрузки файлов

  1. https://www.npmjs.com/package/react-native-fs

  2. https://www.npmjs.com/package/react-native-fetch-blob

Теперь вы можете следить за их документацией для загрузки файлов, таких как видео, изображения или любые другие Вы хотите на телефон вашего пользователя.

Теперь давайте перейдем к той части, которую вы не хотите, чтобы она была доступна пользователю через галерею.

Для этого я предлагаю использовать react-native-fetchblob, поскольку она имеет встроенные намеренные действия и представления. Вы можете загрузить видеофайл с любым случайным именем, например 1234CACHE, с любым произвольным именем без расширения к нему, особенно не назначайте ему расширение, например video.mp4, поскольку галерея обнаруживает файлы .mp4, поэтому не дает ему никакого расширения, а файл не будет быть доступным в любой галерее.

Теперь, как скрыть файл? response-native-fetch-blob позволяет нам сохранять файлы в каталогах, которые не являются общедоступными, я имею в виду, что пользователь не может получить доступ к этим каталогам, и эти каталоги используются только для сохранения данных приложения, поэтому вы можете сохранить свой видеофайл в одном из этих каталогов.

Теперь, после завершения загрузки, вы можете открыть файл с помощью Intent.

Например: -

const VIDEO_PATH = res.path() //the path where your downloaded video is saved, you will actually receive this in the response of download function.

const MIME_TYPE = "video/mp4"

//Now finally call the intent with video mime so the video will be opened in user's media player, or if you want  your own media player you can use any library for that.

 android.actionViewIntent(VIDEO_PATH , MIME_TYPE)

Примечание. Вы можете загружать видео только при наличии URL-адрес пути к видеофайлу. Запрещается смешивать веб-URL с URL-адресом видеофайла. URL-адрес видеофайла имеет имя файла и расширение видео в конце URL-адреса. например, https://someURL.com/video.mp4 это URL-адрес видеофайла, но если у вас есть что-то вроде https://SomeURL.com/video, то это не видеофайл, а веб-страница, отображающая этот видеофайл, так что вы не можете действительно загрузить указанное видео c с веб-страницы! ,

1 голос
/ 22 января 2020

Для этого может быть несколько подходов.

Надеюсь, у вас есть представление о вашем видеоплеере, вариант загрузки зависит от вашего сервера и сайта.

  1. Вы Можно изменить расширение файла загруженного видео, например my_video.notMP4. Таким образом, видео не будет отображаться в Галерее, поскольку оно не обнаружено как видеофайл.

  2. Скрыть папку, в которую загружен видеофайл, добавив точку (.) Перед папкой. Имя может скрыть папку в Android / Unix, а видео будет скрыто из Галереи. Пример .my_Video_folder

  3. В целях большей безопасности вы можете зашифровать видео и создать его в произвольном блоке, который может воспроизводить только ваш плеер. Но вам может понадобиться сделать или найти такой видеоплеер.

Я не мог понять часть заголовков, пожалуйста, объясните.

...