Как загрузить файл UIDocumentPickerViewcontroller в AWS S3 TransferUtility Swift
Я пытаюсь выбрать некоторые файлы из UIDocumentPickerView и загрузить в AWS S3 с помощью TransferUtility. Здесь я не могу передать имя файла, размер и данные файла в функцию загрузки. Кроме того, статус функции загрузки должен отображаться в UITableView.
Здесь под моим кодом:
public func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentAt url: URL) {
let fileurl: URL = url as URL
let filename = url.lastPathComponent
let fileextension = url.pathExtension
print("URL: \(fileurl)", "NAME: \(filename)", "EXTENSION: \(fileextension)")
myFiles.append(filename) //bad way of store
util_TableView.reloadData()
}
Загрузить код:
func uploadImage(with data: Data) {
let expression = AWSS3TransferUtilityUploadExpression()
expression.progressBlock = progressBlock
transferUtility.uploadData(
data,
bucket: S3BucketName,
key: S3UploadKeyName,
contentType: "image/png",
expression: expression,
completionHandler: completionHandler).continueWith { (task) -> AnyObject! in
if let error = task.error {
print("Error: \(error.localizedDescription)")
DispatchQueue.main.async {
self.statusLabel.text = "Failed"
}
}
if let _ = task.result {
DispatchQueue.main.async {
self.statusLabel.text = "Generating Upload File"
print("Upload Starting!")
}
// Do something with uploadTask.
}
return nil;
}
}
1 ответ
Используйте API AWSS3TransferUtility.uploadFile
, Он может использовать файл localuri в качестве параметра, чтобы вам не приходилось передавать данные файла в функцию для загрузки файла.
Вот ответ на этот вопрос. Быстрая загрузка нескольких файлов параллельно в AWS S3 и отображение статуса просмотра хода выполнения в ячейке таблицы.