swift - 如何检测 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
}
}
为了清楚起见,URLs
从Firebase
有这个表格中检索。
照片网址示例:
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 检索到的是照片还是视频?
解决方案
您可以简单地使用您的链接初始化一个 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"
}
推荐阅读
- javascript - 初学者问题:(可选)promise 结合箭头/访问结果/错误值
- pipe - Bazel 构建命令模棱两可的标准输出/标准错误,而管道
- r - 获取一个欠定系统的 n 个解的样本
- android - SD 卡保护 - 按键访问
- swift - SwiftUI 下 TabView 是如何实现的
- jquery - jQuery/Thymeleaf - 设置选中的值
- javascript - Beautifulsoup 抓取 javascript 表问题 csv
- python - 使用 Seaborn FacetGrid 时的 Figuresize
- angular - 使用哪种技术来更新视口中的数千个元素(如 flightradar24.com)并具有良好的性能?
- xamarin - 如何在 Xamarin 中为相同的自定义字体添加多个字体文件