Я получаю эту ошибку загрузки изображения на AWS s3 ведра:Ошибки при загрузке изображений на AWS s3 ведра
2016-11-12 14: 03: 43.095 Давайте Habit [5144: 69128] * Нагрузочное приложение из-за неперехваченное исключение 'NSInvalidArgumentException', причина: '* - [NSConcreteData initWithBytes: длина: копия: deallocator]: абсурдная длина: 18446744073709551615, максимального размер: 9223372036854775808 байт'
Я использую следующий код для запрос:
let fileURL :NSURL = NSURL(string:"\(documentsUrl1)MyappDirectory")!
let filePath = fileURL.path!
let newimg :UIImage = (captureImage?.resizeWithPercentage(0.1))!
let imageData = UIImagePNGRepresentation(newimg)
print(imageData!.length)
imageData!.writeToFile(filePath as String, atomically: true)
let uploadRequest = AWSS3TransferManagerUploadRequest()
uploadRequest.body = fileURL
uploadRequest.key = fileName
uploadRequest.bucket = S3BucketName
self.upload(uploadRequest)
func upload(uploadRequest: AWSS3TransferManagerUploadRequest) {
let transferManager = AWSS3TransferManager.defaultS3TransferManager()
transferManager.upload(uploadRequest).continueWithBlock { (task) -> AnyObject! in
print(task)
if let error = task.error {
if error.domain == AWSS3TransferManagerErrorDomain as String {
if let errorCode = AWSS3TransferManagerErrorType(rawValue: error.code) {
switch (errorCode) {
case .Cancelled, .Paused:
dispatch_async(dispatch_get_main_queue(), {() -> Void in
})
break;
default:
print("upload() failed: [\(error)]")
break;
}
} else {
print("upload() failed: [\(error)]")
}
} else {
print("upload() failed: [\(error)]")
}
}
if let exception = task.exception {
print("upload() failed: [\(exception)]")
}
if task.result != nil {
print(task.result)
let url = task.result
print(url)
dispatch_async(dispatch_get_main_queue(), {() -> Void in
print("https://s3-us-west-2.amazonaws.com/\(uploadRequest.bucket!)/\(uploadRequest.key!)")
})
}
return nil
}
}
Как устранить эту ошибку?
Какая строка вызывает ошибку? Это 'transferManager.upload()'? –
в рамках он остановится, когда я использую точки останова на следующем коде NSInteger read = [self.stream read: chunkBuffer maxLength: defaultChunkSize]; // отметьте конец потока, если данные не прочитаны self.endOfStream = (читать <= 0); NSData * данные = [данные NSDataWithBytesNoCopy: chunkBuffer length: read]; –