【发布时间】:2019-01-21 04:27:54
【问题描述】:
我是 AWS 新手,我已经使用 TransferUtility 文件转换将一些文件上传到 AWS S3。这是我的场景步骤
1.从 iCloud 中挑选文件
public func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentAt url: URL) {
let fileurl: URL = url as URL
let filename = url.lastPathComponent
let file-extension = url.pathExtension
let filedata = url.dataRepresentation
// Call upload function
upload(file: fileurl, keyname: filename, exten: file-extension)
// Append names into array
items.append(item(title: filename, size: string))
self.tableView_util.reloadData()
2。使用 transfer-utility 将该文件上传到 AWS S3
private func upload(file url: URL, keyname : String, exten: String) {
transferUtility.uploadfile(file ur,
bucket: "YourBucket",
key: "YourFileName",
contentType: "text/plain",
expression: expression,
completionHandler: completionHandler).continueWith {
(task) -> AnyObject! in
if let error = task.error {
print("Error: \(error.localizedDescription)")
}
if let _ = task.result {
// Do something with uploadTask.
}
return nil;
}
3.上传时需要在tableview单元格中显示每个文件的上传状态
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cellutil", for: indexPath) as! UtilityTableViewCell
let item = items[indexPath.row]
}
我的问题:我可以显示上传项目的表格视图,但是当我上传下一个时,第一次上传停止。我需要实现并行上传多个文件并显示单元状态。
【问题讨论】:
-
据我了解,您是否要将多个文件上传到 s3 并显示进度?
-
是的。@ Samarth Kejriwal ....我想将多个文件上传到 s3 并在 tableview 单元格中显示进度。我已经完成了上传过程,但我被困在 tableview 单元格显示中。文件 A 上传时间如果我上传文件 B 然后文件 A 停止。我认为我在 tableview 数据重新加载或其他方面犯了错误
-
意思是要在s3上同时上传多个文件,并显示对应单元格的上传进度?
-
看看你能做的是在服务器上上传一个文件,然后在 s3 服务器响应的失败或成功回调时上传下一个文件,如果成功则从你的数组中删除上传的文件并上传下一个,如果失败,请不要从数组中删除该文件并继续上传下一个文件。这样做直到你的数组变空。
-
对于并行上传,您需要多个传输实用程序实例,目前您似乎有一个传输实用程序实例,它可以暂停上一次上传并开始新的上传
标签: ios swift amazon-web-services amazon-s3 awss3transferutility