1

我有一个用 Swift5 编写的项目,它按照 AWS 移动中心集成页面的说明与 AWS 文件上传最多 1GB 集成。现在我想下载最多 1GB 的文件并使用 acitivityViewController 存储在我的 iCloud Drive 中,就像 DropBox 应用程序正在做的那样。

为此,我有 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 !")
                            }
                    }
4

0 回答 0