在应用内下载私人视频反应原生
Posted
技术标签:
【中文标题】在应用内下载私人视频反应原生【英文标题】:Downloading private videos inapp react native 【发布时间】:2020-01-22 18:31:34 【问题描述】:我正在尝试在 react native 中实现一些东西: 我有一个视频网址,我在反应原生视频组件中显示,我怎样才能提供一个按钮以在移动设备中下载相同的视频,但它不应该出现在画廊中。 另外,如果视频是私有的,可以在哪里传递标头以及如何传递?
【问题讨论】:
可以有多种方法。 【参考方案1】:如何下载任何文件?
对于下载像视频这样的任何文件,你首先需要读取和写入手机内部/外部存储的权限,然后你需要一个可以将文件从服务器下载到手机本地文件夹的本机模块。
有两个最著名的文件下载库
https://www.npmjs.com/package/react-native-fs
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)
注意:如果您有视频文件的路径 URL,您只能下载视频,您不能将 Web URL 与视频文件 URL 混合,视频文件 url 在 url 的末尾有文件名和视频扩展名。例如https://someURL.com/video.mp4
这是视频文件的网址,但如果你有类似https://SomeURL.com/video
的内容,它不是视频文件,而是显示该视频文件的网页,因此您无法真正从网页下载该特定视频!
【讨论】:
感谢您的解释,我已经熟悉视频网址和网页之间的区别。你能指导我完成使用 react-native-fs 或 fetch-blob 下载视频的过程吗? 我已使用此方法并通过删除扩展下载了视频,它在 android 中运行良好,我可以在我自己的应用程序中播放视频,但在 ios 中,即使删除后下载的文件仍然可见扩展和下载。【参考方案2】:可以有多种方法。
我希望您对您的视频播放器有所了解,下载选项取决于您的服务器和站点。
您可以更改下载视频的文件扩展名,例如 my_video.notMP4。因此该视频不会显示在图库中,因为它现在未被检测为视频文件。
隐藏下载视频文件的文件夹,在文件夹名称前添加一个点(.)可以隐藏Android/Unix中的文件夹,视频将从图库中隐藏。示例 .my_Video_folder
为了更安全,您可以加密视频并将其制作为只有您的播放器可以播放的自定义块。但您可能需要制作或寻找这样的视频播放器。
标题部分看不懂,请解释一下。
【讨论】:
嗯,我想知道的主要部分是“如何在拥有视频网址的同时下载任何视频”,同时显示一个下载按钮,就像在 youtube 中一样,您可以在其中下载视频。我编辑了问题,抱歉误解! 视频下载依赖于网站兄弟如果能指定网站名称,我会研究一下。你可以试试catch.tube 我以为你有自己的服务器来托管视频,从大多数网站下载视频是违法的。在实施之前请注意这一点。 我有自己的服务器来托管视频。以上是关于在应用内下载私人视频反应原生的主要内容,如果未能解决你的问题,请参考以下文章