【问题标题】:Parse unable to upload images due to image file size由于图像文件大小,解析无法上传图像
【发布时间】:2015-10-01 01:33:29
【问题描述】:

我在将图像上传到 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()
                            }
                        }
                    }
                }
            }

        }
    }

【问题讨论】:

  • 您是否收到错误消息?
  • 没有错误信息。 activityIndi​​cator 永远保持动画效果

标签: image swift parse-platform image-uploading image-size


【解决方案1】:

问题在于我如何表示图像数据。应该是

let imageOneData = UIImageJPEGRepresentation(self.imageOne, 0.5)

不是

let imageOneData = UIImagePNGRepresentation(self.imageOne)

在我使用 UIImagePNGRepresentation 将图像数据上传到 Parse 后,图像文件大小增长到原始大小的 3 倍。我能够使用 UIImageJPEGRepresentation 成功上传更大的图像(文档描述最多 10MB)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-22
    • 1970-01-01
    • 1970-01-01
    • 2011-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多