检查URL是视频URL还是PHOTO URL

问题描述 投票:0回答:1

我有一个textview,应该在其中输入用户的网址。首先,我正在检查URL的有效性。确认有效性后,我需要检查它是视频网址还是照片网址。我有所有可能的视频(MP4,MOV等)和照片(JPG,PNG)文件格式的两个数组,如果URL包含这两个数组中的任何元素,我会收到一条适当的消息。

这里是一个示例instagram视频链接。例如:https://www.instagram.com/p/B-PilcbFy2w/

以下链接是有效的视频链接,但不包含任何视频文件格式,例如(MOV,MP4等)。如何验证此类链接?

我知道使用正则表达式的概念来验证这些内容,但是为此,我必须实现一堆IF语句,但这不是一种有效的方法。示例视频链接只是一个示例。我需要验证所有类型的视频链接,无论它们是来自社交媒体平台还是其他来源。帮助您对此进行评级,将不胜感激。

这是我的示例代码。

@IBOutlet weak var textVW: UITextView!

@IBAction func validateButton(_ sender: UIButton) {


    let userInputURL = URL(string: textVW.text)

    if userInputURL != nil && userInputURL?.scheme != nil && userInputURL?.host != nil {
        //  - a scheme (like http://)
        //  - a host (like stackoverflow.com)

        print("Valid URL..")

        // Now checking url type, if its a video or image url..
        checkURLType(inputURL: userInputURL!)

    }

    else {
        print("Invalid URL..")
    }
}

func checkURLType(inputURL : URL) {

    // Most commom image types..
    let imageExtensions = ["png", "jpg", "gif", "tif"]

    // Most cmmon video types..
    let videoExtensions = ["WEBM", "MPG", "MPEG", "MPE", "MP4", "M4P", "M4V", "AVI", "WMV", "MOV"]

    let url: URL? = NSURL(fileURLWithPath: inputURL.path) as URL
    let pathExtention = url?.pathExtension

    if imageExtensions.contains(pathExtention!)
        {
            print("Image URL: \(String(describing: url))")

        }

    else if videoExtensions.contains(pathExtention!)
        {
             print("Video URL: \(String(describing: url))")
        }

        else
        {
             print("Does Not Exist: \(String(describing: url))")
        }


}
swift url video photo checkvalidity
1个回答
0
投票

简短的答案,您已经发现,您不能以可靠的方式使用URL来确定返回的ressource

长答案:URL中的“扩展名”根本没有任何意义。可以将它视为对客户端的提示,但是Web服务器可能会执行其想要执行的操作。以https://www.acme.com为例:根本没有文件扩展名,并且Web服务器根据其配置来决定要返回的资源。通常,这将是HTML文档,例如“ index.html”之类的东西。https://www.acme.com/index.php的扩展名为php,但Web服务器通常将返回HTML文档,而不是PHP脚本。

获取信息的唯一方法是检查mimeTypeURLResponse属性。

© www.soinside.com 2019 - 2024. All rights reserved.