使用alamofire下载到相机胶卷

时间:2017-06-26 04:03:22

标签: ios swift alamofire

我正在使用此功能将视频下载到名为downloads的文件,使用alamofire。 如何编辑它以便将视频保存到相机胶卷

    func downloadVideoToCameraRoll() {


    let destination: DownloadRequest.DownloadFileDestination = { _, response in
        let pathComponent = response.suggestedFilename!
        var documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
        let directoryURL: URL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
        let folderPath: URL = directoryURL.appendingPathComponent("Downloads", isDirectory: true)
        let fileURL: URL = folderPath.appendingPathComponent(pathComponent)
        return (fileURL, [.removePreviousFile, .createIntermediateDirectories])
    }
    Alamofire.download(firstId, method: .get, parameters: nil, encoding: JSONEncoding.default, to: destination)
        .downloadProgress(queue: DispatchQueue.global(qos: .utility)) { progress in
            self.progresss.setProgress(Float(progress.fractionCompleted), animated: true)
            //print("Progress: \(progress.fractionCompleted)")

        }
        .validate { request, response, temporaryURL, destinationURL in
            // Custom evaluation closure now includes file URLs (allows you to parse out error messages if necessary)
            return .success
        }
        .responseJSON { response in
            debugPrint(response)
            print(response.temporaryURL!)
            print(response.destinationURL!)
    }

2 个答案:

答案 0 :(得分:2)

你可以在swift 3中使用它:

PHPhotoLibrary.shared().performChanges({
   PHAssetChangeRequest.creationRequestForAssetFromVideo(atFileURL: urlToYourVideo)
}) { saved, error in
if saved {
    print("Saved")
}
}

注意:需要导入 照片

答案 1 :(得分:0)

尝试以下代码

func downloadVideoToCameraRoll() {


    let destination: DownloadRequest.DownloadFileDestination = { _, response in
        let pathComponent = response.suggestedFilename!
        var documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
        let directoryURL: URL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]

        return (directoryURL, [.removePreviousFile, .createIntermediateDirectories])
    }
    Alamofire.download(firstId, method: .get, parameters: nil, encoding: JSONEncoding.default, to: destination)
        .downloadProgress(queue: DispatchQueue.global(qos: .utility)) { progress in
            self.progresss.setProgress(Float(progress.fractionCompleted), animated: true)
            //print("Progress: \(progress.fractionCompleted)")

        }
        .validate { request, response, temporaryURL, destinationURL in
            // Custom evaluation closure now includes file URLs (allows you to parse out error messages if necessary)
            return .success
        }
        .responseJSON { response in
            debugPrint(response)
            print(response.temporaryURL!)
            print(response.destinationURL!)
            saveVideoTo(destinationURL)
    }


    func saveVideoTo(_ videoUrl:Url?){

    if videoUrl != nil {
            PHPhotoLibrary.sharedPhotoLibrary().performChanges({ () -> Void in

            let createAssetRequest: PHAssetChangeRequest = PHAssetChangeRequest.creationRequestForAssetFromVideoAtFileURL(NSURL(string: videoUrl)!)!
            createAssetRequest.placeholderForCreatedAsset

            }) { (success, error) -> Void in
                if success {
                //saved successfully 

                }
                else {
                 //error occured
                }
        }

    }

    }