2015-10-15 2 views
0

Я не касался библиотеки AWS, но я получаю эту ошибку, когда пытаюсь загрузить изображение на S3.Загрузка изображения на S3

Bug AWS

У меня есть Xcode 7 и последнюю версию AWS SDK 2.2.6.

Я использую этот код для загрузки изображения:

 // Upload image 

     let path: String = NSTemporaryDirectory() 
     let path_url: NSURL = (NSURL(string: path)?.URLByAppendingPathComponent("prof.png"))! 
     let imageData: NSData = UIImageJPEGRepresentation(image, 0.4)! 
     imageData.writeToFile(path_url.URLString, atomically: true) 

     let url: NSURL = NSURL(fileURLWithPath: path as String) 

     let upload_request = AWSS3TransferManagerUploadRequest() 

     upload_request.bucket = s3_bucket_name 
     upload_request.ACL = AWSS3ObjectCannedACL.AuthenticatedRead 
     upload_request.key = "/prof.png" 
     upload_request.body = url; 

     upload_request.uploadProgress = { (bytesSent, totalBytesSent, totalBytesExpectedToSend) -> Void in 
      dispatch_async(dispatch_get_main_queue(), {() -> Void in 
       if totalBytesExpectedToSend > 0 { 
        print("\(totalBytesSent)/\(totalBytesExpectedToSend)total bytes sent") 
       } 
      }) 
     } 

     // 

Он работал и раньше, но я не уверен, если это произошло, когда я обновил библиотеку AWS через cocoapods или Xcode 7.

I удаленные/Pods, Podfile.lock и DerivedData, также я очистил проект и переустановил AWS 2.2.6 (pod install)

+2

Прочитать сообщение об ошибке. Вы пытаетесь создать экземпляр NSData с «абсурдной длиной». – rmaddy

+0

Да, @rmaddy Я думаю, что ты прав, это сработало раньше. Я только что изменил способ сохранения файла. – aguilarpgc

ответ

0

Я использую другой способ сохранения временного файла.

// temporary 

    let fileName = NSProcessInfo.processInfo().globallyUniqueString.stringByAppendingString(".png") 
    let fileURL = NSURL(fileURLWithPath: NSTemporaryDirectory()).URLByAppendingPathComponent(fileName) 
    let imageData = UIImageJPEGRepresentation(image, 0.4)! 

    do { 
     try imageData.writeToURL(fileURL, options: .DataWritingAtomic) 
    } catch _ { 
     print("didn't write into it.") 
    } 

    // ... 

И обновить URL-адрес тела.

upload_request.body = fileURL; 
Смежные вопросы