2015-10-15 143 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;