Swift - захватить все файлы из определенной папки / удаленного URL на сервере - PullRequest
0 голосов
/ 29 августа 2018

Я пытаюсь получить доступ к определенной папке по удаленному URL, например, http://dev.servertest.com/sessions/id/video

оттуда я хочу взять все видео из папки и загрузить их на устройство.

Я знаю, как загрузить видео с удаленного URL-адреса в каталог, но я не могу собрать все видео из определенной папки с видео.

Кроме того, сервер может меняться в зависимости от пользователя, использующего свой собственный сервер, но остальная часть структуры должна быть такой же "/ session / 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)")
    }
}

Если бы кто-то мог указать мне правильное направление, это было бы здорово. Спасибо.

1 Ответ

0 голосов
/ 30 августа 2018

Протокол HTTP не предоставляет никаких средств для получения списка файлов в каталоге. То, что вы пытаетесь сделать, обычно невозможно без манифеста - списка файлов, которые вы хотите загрузить.

Самый простой способ сделать это - запустить скрипт на сервере, например,

#!/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 относительно сложен и его легко неправильно настроить.

Наконец, некоторые веб-серверы предоставляют способ включения «списков каталогов» - веб-страницы, на которой есть ссылки на все файлы в каталоге. (Многие люди скажут вам, что это плохая идея с точки зрения безопасности, хотя это спорно.) Вполне возможно, хотя по своей природе хрупки, чтобы разобрать такую ​​страницу и извлечь ссылки. Однако этот подход настоятельно не рекомендуется, поскольку он может полностью сломаться при обновлении до новой версии программного обеспечения веб-сервера.

...