我有一个用 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 !")
}
}