невозможно получить видео в веб-браузере с помощью GCDWebServer в Swift - PullRequest
7 голосов
/ 21 мая 2019

Я создал небольшое демонстрационное приложение, в котором приложение получает доступ к изображениям и видео с iPhone с помощью UIImagePickerController. Когда я выбираю любое изображение или видео, приложение создает его копию (изображение или видео) в каталоге документов. И создайте веб-сервер на iPhone с помощью GCDWebserver и необходимо выставить выбранное изображение или видео. Но это не работает.

Вот пример кода, не знаю, где я могу ошибаться.

class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {

@IBOutlet weak var btnselect: UIButton!
let videoPicker = UIImagePickerController()

@IBAction func btnSelect(_ sender: Any) {

        if UIImagePickerController.isSourceTypeAvailable(.photoLibrary){
            let myPickerController = UIImagePickerController()
            myPickerController.delegate = self;
            myPickerController.sourceType = .photoLibrary
            myPickerController.allowsEditing = false
            self.present(myPickerController, animated: true, completion: nil)
        }

    }

func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
        self.dismiss(animated: true, completion: nil)
    }

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {

    // 1. saving video to documents directory

      let videoURL = info[UIImagePickerController.InfoKey.mediaURL] as! NSURL
            let videoData = NSData(contentsOf: videoURL as URL)
            let path = try! FileManager.default.url(for: FileManager.SearchPathDirectory.documentDirectory, in: FileManager.SearchPathDomainMask.userDomainMask, appropriateFor: nil, create: false)

            let newPath = path.appendingPathComponent("/myTestVideo.mp4")
            do {
                try videoData?.write(to: newPath)
            } catch {
                print(error)
            }


 // 2. Create web server on iPhone using GCDWebServer

        let webServer = GCDWebServer()
        webServer.addDefaultHandler(forMethod: "GET", request: GCDWebServerRequest.self, processBlock: {request in
        return GCDWebServerDataResponse(newPath)

       })
       webServer.start(withPort: 8080, bonjourName: "GCD Web Server")

}
}

Мне нужно, чтобы этот выбранный (изображение или видео) был размещен / доступен для этого GCD Web Server.

1 Ответ

0 голосов
/ 29 мая 2019

Если предположить, что это неправильный путь

let newPath = path.appendingPathComponent("/myTestVideo.mp4")

производство ..../Documents//myTestVideo.mp4

Попробуйте удалить обратную косую черту из добавляемого компонента пути.

let newPath = path.appendingPathComponent("myTestVideo.mp4")

Также существует небольшая вероятность того, что проблема может быть связана с префиксом "file: //". Если предыдущее предложение не поможет, попробуйте удалить префикс.

...