2015-07-12 62 views
2

我在將圖像上傳到Parse時出現問題。我認爲這個問題可能涉及到的圖像文件的大小,而是根據這個鏈接解析由於圖像文件大小而無法上傳圖像

https://parse.com/questions/file-size-limit-in-uploads

每個文件可以達到10MB。我可以成功上傳2張圖像,每張圖像爲1.7MB,但只要我嘗試上傳2張大於2MB的圖像,該通話就會永久停止。應用程序不會崩潰,即使在等待5分鐘後加載圖像,也會一直無限期地加載。 「發佈」對象保存正常,但圖像未保存。

我已經包含相關的代碼上傳圖片解析下面。有人能讓我知道我在做什麼錯嗎?這是否與我將圖像保存到名爲「Images」的類然後將PFObject保存在其他圖像的列表中然後將該圖像列保存爲「Post」類中​​的一列有關?我希望能夠直接訪問與此帖子關聯的圖像,而無需額外的API調用來檢索與帖子相關聯的圖像。請讓我知道,如果有任何不清楚。

var post = PFObject(className: "Post") 
post["caption"] = captionTextField.text 
post["user"] = PFUser.currentUser() 

post.saveInBackgroundWithBlock{(success: Bool, error: NSError?) -> Void in 

     if success == false { 
      println("failed 1") 

      self.activityIndicator.stopAnimating() 
      UIApplication.sharedApplication().endIgnoringInteractionEvents() 
     } else { 

      let imageOneData = UIImagePNGRepresentation(self.imageOne) 

      let imageOneFile = PFFile(name: "imageOne.png", data: imageOneData) 

      let imageTwoData = UIImagePNGRepresentation(self.imageTwo) 

      let imageTwoFile = PFFile(name: "imageTwo.png", data: imageTwoData)     

      var images: [PFFile] = [imageOneFile, imageTwoFile] 

      var finishedUploads = 0 

      var listOfImages : [PFObject] = [] 

      for var i = 0; i < images.count; i++ { 
       var postImage = PFObject(className: "Images") 
       postImage["image"] = images[i] 
       postImage["postId"] = post.objectId 
       postImage["likes"] = 0 

       postImage.saveInBackgroundWithBlock{(success: Bool, error: NSError?) -> Void in 


        finishedUploads++ 

        if success == false { 
         println("failed 3") 
        } else { 
         println("success 3") 

         println(postImage.objectId) 


         listOfImages.append(postImage) 

         if finishedUploads == images.count { 


          post["listOfImages"] = listOfImages 

          post.saveInBackgroundWithBlock{(success: Bool, error: NSError?) -> Void in 

           if success == false { 
            println("failed 10") 
           } else { 
            println("success 10") 

            var storyboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil) 

            if let tabViewController = storyboard.instantiateViewControllerWithIdentifier("Home") as? UINavigationController { 
             self.presentViewController(tabViewController, animated: true, completion: nil) 
            } else { 
             println("What should I do here?") 
            } 
           } 

           self.activityIndicator.stopAnimating() 
           UIApplication.sharedApplication().endIgnoringInteractionEvents() 
          } 
         } 
        } 
       } 
      } 

     } 
    } 
+0

您是否收到錯誤訊息? – ndmeiri

+0

沒有錯誤信息。 activityIndi​​cator只是永遠保持動畫 – josealvarado111

回答

13

問題是我是如何表示圖像數據。它應該是

let imageOneData = UIImageJPEGRepresentation(self.imageOne, 0.5) 

let imageOneData = UIImagePNGRepresentation(self.imageOne) 

我上傳的圖像數據利用UIImagePNGRepresentation解析後,圖像文件大小增長到3倍的原始大小。我能夠使用UIImageJPEGRepresentation成功上傳更大的圖像(文檔描述高達10MB)。