Tôi đang sử dụng S3 bucket
để tải lên hình ảnh từ dự án swift
của mình, tuy nhiên, mỗi lần tải lên của tôi tạm dừng và cung cấp cho tôi cảnh báo sau trong bảng điều khiển. Tuy nhiên, tôi không chắc chắn lý do tại sao nhưng tải lên dường như tự động khởi động lại và lần thứ hai hầu như luôn thành công. Và bất kỳ tải lên nào sau đó thường tốt. (Nó chỉ là khi tôi đã không tương tác với máy chủ cho một lúcAmazon Web Service S3 đã hết thời gian
AWSiOSSDK v2.4.7 [Error] AWSURLSessionManager.m line:212 | -[AWSURLSessionManager URLSession:task:didCompleteWithError:] | Session task failed with error: Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." UserInfo={NSUnderlyingError=0x13eba2b50 {Error Domain=kCFErrorDomainCFNetwork Code=-1001 "(null)" UserInfo={_kCFStreamErrorCodeKey=-2102, _kCFStreamErrorDomainKey=4}}, NSErrorFailingURLStringKey=https://s3.amazonaws.com/myBucketName/filename.jpg, NSErrorFailingURLKey=https://s3.amazonaws.com/myBucketName/filename.jpg, _kCFStreamErrorDomainKey=4, _kCFStreamErrorCodeKey=-2102, NSLocalizedDescription=The request timed out.}
Dưới đây là làm thế nào tôi gửi hồ sơ cho S3
// 2. Create upload request
let uploadRequest = AWSS3TransferManagerUploadRequest()
uploadRequest.bucket = "myBucket"
uploadRequest.key = "FileName.jpg"
uploadRequest.ACL = AWSS3ObjectCannedACL.PublicRead
uploadRequest.contentType = "image/jpg"
uploadRequest.body = url
// Track progress through an AWSNetworkingUploadProgressBlock
uploadRequest?.uploadProgress = {[weak self](bytesSent:Int64, totalBytesSent:Int64, totalBytesExpectedToSend:Int64) in
dispatch_sync(dispatch_get_main_queue(), {() -> Void in
let progress = Float(totalBytesSent)/Float(totalBytesExpectedToSend)
print(" totalBytesSent \(totalBytesSent)/totalBytesExpectedToSend \(totalBytesExpectedToSend) progress = \(progress * 100) %")
circularProgressView.setProgress(progress, animated: true)
})
}
// 3. Upload to Amazone S3
let transferManager = AWSS3TransferManager.defaultS3TransferManager()
transferManager.upload(uploadRequest).continueWithExecutor(AWSExecutor.mainThreadExecutor(), withBlock: { (task: AWSTask) -> AnyObject? in
MRProgressOverlayView.dismissOverlayForView(self.view, animated: true)
self.enableUserInteraction()
if let error = task.error {
if error.domain == AWSS3TransferUtilityErrorDomain {
switch task.error?.code {
case AWSS3TransferManagerErrorType.Cancelled.rawValue?:
break
case AWSS3TransferManagerErrorType.Paused.rawValue?:
break
default:
self.showErrorAlert("Error uploading image #1", message: "\(error)")
}
} else {
self.showErrorAlert("Error uploading image #2", message: "\(error)")
}
} else {
if task.completed {
let imgLink = "https://s3.amazonaws.com/letzzeeamazones3bucket2/\(uploadRequest.key!)"
self.postToFirebase(imgLink, userCoordinate: userCoordinate)
} else {
self.showErrorAlert("Error uploading image #3", message: "Please try again later")
MRProgressOverlayView.dismissOverlayForView(self.view, animated: true)
self.enableUserInteraction()
}
}
Bạn đang sử dụng trình mô phỏng? – JAL
Điều này xảy ra cả trên giả lập và thiết bị của tôi – user172902
Câu hỏi là gì? Thời gian chờ được mong đợi. AWS có thể ẩn chúng khỏi bạn, nhưng chúng cho bạn thấy những gì đang xảy ra khi họ có quá nhiều yêu cầu để đáp ứng và quá ít tài nguyên sẵn có. Tôi sử dụng dịch vụ b2 của Backblaze và tôi thấy điều tương tự: thời gian chờ theo thời gian. Những thời gian chờ này có gây ra sự cố cho bạn không? –