使用 AFNetworking 将图像上传到服务器已损坏

Posted

技术标签:

【中文标题】使用 AFNetworking 将图像上传到服务器已损坏【英文标题】:Uploading image to server reached damaged using AFNetworking 【发布时间】:2016-01-19 16:09:07 【问题描述】:

我一直在努力将图像上传到服务器并成功上传,但如果我尝试打开图像,它会在服务器端显示cannot be displayed because it contains errors。我正在使用 AFNetworking 将图像转换为 JPEGRepresentation 后上传图像。

let uploadManager : AFHTTPSessionManager = AFHTTPSessionManager()

        uploadManager.responseSerializer = AFHTTPResponseSerializer() as AFHTTPResponseSerializer
        uploadManager.requestSerializer = AFHTTPRequestSerializer() as AFHTTPRequestSerializer

        uploadManager.requestSerializer.timeoutInterval = 20

        uploadManager.POST(baseURL, parameters: nil, constructingBodyWithBlock:  (formData) -> Void in

            let selectedImage = self.userImage.image
            let imageData : NSData = UIImageJPEGRepresentation(selectedImage!, 0.5)!
            formData.appendPartWithFileData(imageData, name: "1", fileName: "userimage\(self.objManager.userID)", mimeType: "image/jpeg")

            print("Size of Image(Kbytes):\(imageData.length/1024)")
            print(baseURL)
            , progress: nil, success:  (task, responseObject) -> Void in

                let jsonData: NSData = responseObject as! NSData
                let dataString = String(data: jsonData, encoding: NSUTF8StringEncoding)
                print(dataString)

            )  (task, error) -> Void in


        

图片来自imagePickerController

func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage, editingInfo: [String : AnyObject]?) 

    print("Did finish picking the image succesfully")
    self.userImage.image = image
    picker.dismissViewControllerAnimated(true, completion: nil)

    // call uploading image function



是什么导致图像损坏?我一直在与后端开发人员联系,他的机制是接收字节数组!将 NSData 发送到服务器,然后服务器将我的 NSData 转换为字节数组会损坏图像吗?还是可以?我该如何解决这个问题?我发送图片时有什么问题吗?

【问题讨论】:

【参考方案1】:

1)(task, error) -> Void in 中打印错误(如果存在),因为如果出现问题,您会在那里收到错误。

NSLog("%@", error.localizedDescription)

2) 你确定name: "1" 是写的吗?因为这是后端获取文件数据的字段名称(请询问您的后端开发人员此字段名称)

3) 将文件类型jpeg 附加到上传图片名称:

formData.appendPartWithFileData(imageData, name: "1", fileName: "userimage\(self.objManager.userID).jpeg", mimeType: "image/jpeg")

【讨论】:

图像到达服务器并存储在成功块中,没有错误。我也尝试了注释 3,但图像仍然有相同的错误。我会检查注2,我会告诉你的! :) 谢谢

以上是关于使用 AFNetworking 将图像上传到服务器已损坏的主要内容,如果未能解决你的问题,请参考以下文章

使用 AFNetworking 3.0 上传图像 [关闭]

如何使用 Afnetworking 在 ios 中在后台上传图像

如何直接从 iPad 应用程序使用 AFNetworking 上传图像

一次可以将多少张图像上传到 AFNetworking [关闭]

AFNetworking 2.0 图片上传和 JSON 返回错误

使用 Afnetworking 发布没有图像的数据