使用activityViewController将快速的1GB文件保存到云驱动器

时间:2019-08-22 06:56:28

标签: amazon-web-services nsdata uiactivityviewcontroller swift5 xcode10.2.1

我有一个用Swift5编写的项目,该项目按照AWS移动中心集成页面上的说明与AWS文件上载至1GB。现在我想下载多达1GB的文件,并在DropBox应用程序执行操作时使用acitivityViewController将其存储在我的i​​Cloud Drive中。

为此,我有S3存储桶文件URL,我需要将其转换为数据,但是此过程花费了太多时间,并向我显示错误“请求超时”。

DropBox应用程序非常快地下载同一文件。

任何人都可以指导我如何完成此过程,以便我可以将这1GB的下载量下载到iCloud Drive吗?

这是我的代码如何将文件URL转换为NSData。

                    // Create destination URL
                    let documentsUrl:URL =  FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first as URL!
                    let destinationFileUrl = documentsUrl.appendingPathComponent("myfileName")

                    Alamofire.request("https://ecentrafileupload.s3.amazonaws.com/080546-Chaal_Jeevi_Laiye_2019_Gujarati.mp4", method: .get, headers: nil)
                        .downloadProgress { progress in
                            print("Download Progress: \(progress.fractionCompleted)")
                        }
                        .responseData { response in
                            //print(response.result.error)
                            do {
                                try response.result.value?.write(to: destinationFileUrl)

                                do {
                                    //Show UIActivityViewController to save the downloaded file
                                    let contents  = try FileManager.default.contentsOfDirectory(at: documentsUrl, includingPropertiesForKeys: nil, options: .skipsHiddenFiles)
                                    for indexx in 0..<contents.count {
                                        if contents[indexx].lastPathComponent == destinationFileUrl.lastPathComponent {
                                            print(contents[indexx])
                                            let activityViewController = UIActivityViewController(activityItems: [contents[indexx]], applicationActivities: nil)
                                            self.present(activityViewController, animated: true, completion: nil)
                                        }
                                    }
                                }
                                catch (let err) {
                                    print("error: \(err)")
                                }

                            } catch {
                                print("oops !")
                            }
                    }

0 个答案:

没有答案