Swift - 从服务器上的特定文件夹/远程 URL 中获取所有文件

标签 swift url server nsurlsession remote-server

我正在尝试访问远程 URL 中的特定文件夹,例如http://dev.servertest.com/sessions/id/video

从那里,我想从文件夹中抓取所有视频并将它们下载到设备。

我知道如何将视频从远程 URL 下载到目录,但我无法从特定视频文件夹中获取所有视频。

此外,服务器可能会根据使用自己服务器的用户而变化,但其余结构应该是相同的“/sessions/id/video”

如果有帮助,下面是我用来从我的应用程序目录中的特定文件夹“ImportVideos”上传的代码。

func loadVideos(){


    let fm = FileManager.default
    let dirPaths = fm.urls(for: .documentDirectory, in: .userDomainMask)
    let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0];

    do {
        let videoList = try fm.contentsOfDirectory(atPath: "\(documentsPath + "/ImportVideo")")

        for filename in videoList {
            videoSubtitles.append(filename) //this is used to populate my tableview
        }
    } catch let error {
        print("error: \(error.localizedDescription)")
    }
}

如果有人能为我指出正确的方向,那就太好了。谢谢。

最佳答案

HTTP 协议(protocol)不提供任何获取目录中文件列表的方法。如果没有 list ,您通常无法尝试执行操作 - 您要下载的文件列表。

最简单的方法是在服务器上运行脚本,例如

#!/bin/sh
FILES_DIR=/path/to/directory/on/server
cd "$FILES_DIR"
ls > allfiles.txt

然后让您的应用程序获取文件 http://example.com/path/to/allfiles.txt ,然后用换行符拆分它,并获取每个文件。这种方法还提供了一个优势,让您稍后可以使用脚本处理程序替换该文本文件,如果需要,该脚本处理程序可以为不同的客户端提供不同的文件列表,例如用于支持您应用的不同版本。

或者,如果您的服务器支持 WebDAV,则可以配置启用 WebDAV 的目录,并使用 WebDAV 库找出目录中的文件。然而,这可能不是一个好主意,因为 WebDAV 相对复杂且容易配置错误。

最后,一些网络服务器提供了一种启用“目录列表”的方法——一个包含指向目录中所有文件的链接的网页。 (许多人会告诉您,从安全的角度来看,这是一个坏主意,尽管这是值得商榷的。)虽然本质上很脆弱,但还是有可能解析这样的页面并提取链接。但是,强烈不建议使用这种方法,因为当您更新到新版本的网络服务器软件时,它可能会完全崩溃。

关于Swift - 从服务器上的特定文件夹/远程 URL 中获取所有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52069817/

相关文章:

ios - 拖动手势的单元格将覆盖使用SwiftUI滚动列表

ios - 使用 6 次重复测试 TapGesture(iOS 和 Swift)

php - 我的 php 代码转换了一些字符

php - 哪个更好,404 错误页面或重定向到首页

ubuntu - NGINX SEO 重写

php - 返回按钮跳页

swift - 检查日期何时过去 - Swift

swift - 如何从同一 ViewController 的扩展访问 var

在浏览器中显示的Java字符串(源代码)

Java 8 : Using Instant, 如何检索 ZoneId 信息