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

Maa*_*bar 6 react-native react-native-fs react-native-video

我正在尝试在 React Native 中实现一些功能:我有一个在 React Native 视频组件中显示的视频网址,我如何提供一个按钮来在移动设备中下载相同的视频,但它不应该出现在图库中。另外,如果视频是私有的,则可以在哪里传递标题以及如何传递?

Kas*_*der 9

如何下载任何文件?

对于下载视频、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 文件,所以不要给它任何扩展名,并且该文件将在以下位置不可用任何画廊。

现在如何隐藏文件?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)

Run Code Online (Sandbox Code Playgroud)

注意:如果您有视频文件的路径 URL,则只能下载视频,不得将 Web URL 与视频文件 URL 混合,视频文件 URL 的末尾包含文件名和视频扩展名。例如, https://someURL.com/video.mp4这是视频文件网址,但如果您有类似的内容,https://SomeURL.com/video它不是视频文件,而是显示该视频文件的网页,因此您无法真正从网页下载该特定视频!