2016-11-12 5 views
0

Я получаю эту ошибку загрузки изображения на 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 
    } 
} 

Как устранить эту ошибку?

+1

Какая строка вызывает ошибку? Это 'transferManager.upload()'? –

+0

в рамках он остановится, когда я использую точки останова на следующем коде NSInteger read = [self.stream read: chunkBuffer maxLength: defaultChunkSize]; // отметьте конец потока, если данные не прочитаны self.endOfStream = (читать <= 0); NSData * данные = [данные NSDataWithBytesNoCopy: chunkBuffer length: read]; –

ответ

2

У меня была та же проблема. Решение для меня состояло в том, чтобы добавить имя файла в URL-адрес файла, который указывал на каталог

Смежные вопросы