在应用程序中下载私人视频反应本机

Downloading private videos inapp react native

我正在尝试在 React Native 中实现一些东西: 我有一个 url 的视频,我在反应本机视频组件中显示,我如何提供一个按钮来在移动设备中下载相同的视频,但它不应该出现在画廊中。 此外,如果视频是私有的,可以在何处传递 headers 以及如何传递?

可以有多种方法。

希望您对视频播放器有所了解,下载选项取决于您的服务器和站点。

  1. 您可以更改下载视频的文件扩展名,例如my_video.notMP4。因此该视频不会显示在图库中,因为它现在未被检测为视频文件。

  2. 隐藏视频文件下载的文件夹,在文件夹名前加一个点(.)可以隐藏Android/Unix中的文件夹,视频将从图库中隐藏。示例 .my_Video_folder

  3. 为了更安全,您可以加密视频并将它们制作成只有您的播放器才能播放的自定义块。但是你可能需要自己制作或寻找这样的视频播放器。

我无法理解headers部分,请解释。

如何下载任何文件?

好吧,要下载任何文件,例如视频,img,您首先需要读取和写入 phone 的 internal/external 存储的权限,然后您需要一个可以从服务器下载文件到的本机模块phone.

的本地文件夹

有两个最著名的文件下载库

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

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

现在您可以按照他们的文档将视频、图像或任何您想要的文件下载到用户的 phone。

现在让我们来谈谈您不希望通过图库提供给用户的部分。

为此,我建议使用 react-native-fetchblob,因为它具有内置的意图操作和视图。 您可以下载具有任何随机名称的视频文件,例如 1234CACHE 任何没有任何扩展名的随机名称,特别是不要给它像 video.mp4 这样的扩展名,因为图库检测到 .mp4 文件所以不要给它任何扩展名,文件会赢'在任何画廊中可用。

现在如何隐藏文件? react-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 的内容,则它不是视频文件,而是显示该视频文件的网页,因此您无法真正下载该特定文件来自网页的视频!