```swift
func uploadData(key: String, data: Data) {
let options = StorageUploadDataRequest.Options(accessLevel: .protected)
Amplify.Storage.uploadData(key: key, data: data, options: options) { progress in
print("Progress: \(progress)")
} resultListener: { event in
switch event {
case .success(let data):
print("Completed: \(data)")
case .failure(let storageError):
print("Failed: \(storageError.errorDescription). \(storageError.recoverySuggestion)")
}
}
}
```
```swift
var progressSink: AnyCancellable?
var resultSink: AnyCancellable?
func uploadData(key: String, data: Data) {
let options = StorageUploadDataRequest.Options(accessLevel: .protected)
let storageOperation = Amplify.Storage.uploadData(key: key, data: data, options: options)
progressSink = storageOperation.progressPublisher.sink { progress in print("Progress: \(progress)") }
resultSink = storageOperation.resultPublisher.sink {
if case let .failure(storageError) = $0 {
print("Failed: \(storageError.errorDescription). \(storageError.recoverySuggestion)")
}
}
receiveValue: { data in
print("Completed: \(data)")
}
}
```