2015-10-15 218 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") 
       } 
      }) 
     } 

     // 

它的工作之前,但我不知道如果這發生了,當我通過的CocoaPods或Xcode的7

我更新了AWS庫刪除/豆莢,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.") 
    } 

    // ... 

並更新正文網址。

upload_request.body = fileURL;