首页 > 解决方案 > 如何检测 Firebase url 是照片还是视频 - Swift

问题描述

我一直在试图弄清楚如何检测url我从 Firebase 存储中检索到的是照片还是视频,

我关注了这个问题,但它似乎不适用于 Firebase Storage URLs

该问题中实施的解决方案在 urlextension末尾有 时才有效。这是我实现的代码:

extension String {
public func isImageType() -> Bool {
    // image formats which you want to check
    let imageFormats = ["jpg", "png", "gif"]

    if URL(string: self) != nil  {

        let extensi = (self as NSString).pathExtension

        return imageFormats.contains(extensi)
    }
    return false
    }
}

为了清楚起见,URLsFirebase有这个表格中检索。

照片网址示例:

https://firebasestorage.googleapis.com/v0/b/myApp-1e48d.appspot.com/o/Images%2FD118DA58-C128-4E5E-BF24-AA820BEE5590.jpg?alt=media&token=49eie236-f9d1-45f8-bd0b-887382c61ccd

视频网址示例:

https://firebasestorage.googleapis.com/v0/b/myApp-1e48d.appspot.com/o/Videos%2F1E4B7CA0-4D0E-4AC5-9856-2F59D0811C47.mp4?alt=media&token=615teacf-0d20-48aa-bb8f-cew84a14d76d

如您所见,extension不是在最后(因为需要令牌),因此之前链接的扩展方法不起作用。

我如何才能知道url从 Firebase 检索到的是照片还是视频?

标签: swiftfirebaseurlgoogle-cloud-firestorefirebase-storage

解决方案


您可以简单地使用您的链接初始化一个 url 并获取路径扩展名:

let link1 = "https://firebasestorage.googleapis.com/v0/b/myApp-1e48d.appspot.com/o/Images%2FD118DA58-C128-4E5E-BF24-AA820BEE5590.jpg?alt=media&token=49eie236-f9d1-45f8-bd0b-887382c61ccd"

if let url = URL(string: link1) {
    let fileType = url.pathExtension  // "jpg"
}


let link2 = "https://firebasestorage.googleapis.com/v0/b/myApp-1e48d.appspot.com/o/Videos%2F1E4B7CA0-4D0E-4AC5-9856-2F59D0811C47.mp4?alt=media&token=615teacf-0d20-48aa-bb8f-cew84a14d76d"

if let url = URL(string: link2) {
    let fileType = url.pathExtension  // "mp4"
}

推荐阅读