2016-11-10 81 views
0

我正嘗試將圖像上傳到存儲桶。連接完成後,上傳顯然開始,但沒有進展。我認爲服務器上的權限是正確的,因爲Android應用程序能夠上傳。 在我的appdelegate我有這樣的:迅速上傳到s3存儲桶並未結束

let credentialsProvider = AWSCognitoCredentialsProvider(regionType: AWSRegionType.USEast1, identityPoolId: "us-east-1:XXXXXX-XXXX-XXXX-XXXX-XXXX」, unauthRoleArn: "arn:aws:iam::XXXXX:role/Cognito_mybucketUnauth_Role", authRoleArn: "arn:aws:iam::XXXXX:role/Cognito_mybucketAuth_Role", identityProviderManager: nil) 

let configuration = AWSServiceConfiguration(region: AWSRegionType.USEast1, credentialsProvider: credentialsProvider) 
     AWSServiceManager.defaultServiceManager().defaultServiceConfiguration = configuration 

而這款以獲取圖像,並上傳

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]){ 

    //getting details of image 
    let uploadFileURL = info[UIImagePickerControllerReferenceURL] as! NSURL 

    let imageName = uploadFileURL.lastPathComponent 
    let documentDirectory = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true).first! as String 

    // getting local path 
    let localPath = (documentDirectory as NSString).stringByAppendingPathComponent(imageName!) 


    //getting actual image 
    let image = info[UIImagePickerControllerOriginalImage] as! UIImage 
    let data = UIImagePNGRepresentation(image) 
    data!.writeToFile(localPath, atomically: true) 

    let imageData = NSData(contentsOfFile: localPath)! 
    imageURL = NSURL(fileURLWithPath: localPath) 

    CampoImagem.image = image 

    picker.dismissViewControllerAnimated(true, completion: nil) 
    uploadImage() 
} 


func uploadImage(){ 

    //defining bucket and upload file name 
    let S3BucketName: String = 「mybucket" 
    let S3UploadKeyName: String = "profile/testImage.jpg" 

    let expression = AWSS3TransferUtilityUploadExpression() 
    /*expression.uploadProgress = {(task: AWSS3TransferUtilityTask, bytesSent: Int64, totalBytesSent: Int64, totalBytesExpectedToSend: Int64) in 
     dispatch_async(dispatch_get_main_queue(), { 
      let progress = Float(totalBytesSent)/Float(totalBytesExpectedToSend) 
      print("Progress is: \(progress)") 
     }) 
    }*/ 


    self.uploadCompletionHandler = { (task, error) -> Void in 
     dispatch_async(dispatch_get_main_queue(), { 
      if ((error) != nil){ 
       print("Failed with error") 
       print("Error: \(error!)"); 
      } 
      else{ 
       print("Sucess") 
      } 
     }) 
    } 

    let transferUtility = AWSS3TransferUtility.defaultS3TransferUtility() 

    transferUtility.uploadFile(imageURL, bucket: S3BucketName, key: S3UploadKeyName, contentType: "image/jpeg", expression: expression, completionHander: uploadCompletionHandler).continueWithBlock { (task) -> AnyObject! in 
     if let error = task.error { 
      print("Error: \(error.localizedDescription)") 
     } 
     if let exception = task.exception { 
      print("Exception: \(exception.description)") 
     } 
     if let _ = task.result { 
      print("Upload Starting!") 
     } 

     return nil; 
    } 
} 

打印:上傳開始!

我懷疑這是當ID和許可完成與aws上傳的東西,但我認爲如果這是上傳不會啓動,更正? 我該如何解決這個問題?

回答