alamofire 上传图像数组不起作用

Posted

技术标签:

【中文标题】alamofire 上传图像数组不起作用【英文标题】:alamofire upload array of images doesn't work 【发布时间】:2016-09-27 16:33:58 【问题描述】:

我需要上传一组带有一些额外文字的图像。我是这样使用 Alamofire 的:

  let headers = ["Authorization": "Bearer \(userToken)"]
            Alamofire.upload(.POST, "url", headers: headers, multipartFormData:  multipartFormData in

                if let post = post?.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false) 
                    multipartFormData.appendBodyPart(data: post, name: "name")
                
                if let pictures = pictures 
                    for image in pictures 
                        if let imageData = UIImageJPEGRepresentation(image, 1)?.base64EncodedDataWithOptions(.Encoding64CharacterLineLength) 
                            multipartFormData.appendBodyPart(data: imageData, name: "pictures", fileName: "pictures", mimeType: "image/jpeg")
                        
                    
                
                if let pictureText = pictureText?.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false) 
                    multipartFormData.appendBodyPart(data: pictureText, name: "picture_text")
                

                , encodingCompletion:  encodingResult in
                    switch encodingResult 
                    case .Success(let upload, _, _):
                        upload.progress  (bytesWritten, totalBytesWritten, totalBytesExpectedToWrite) in
                            DDLogDebug("Uploading images for status post \(totalBytesWritten) / \(totalBytesExpectedToWrite)")
                        
                        upload.responseJSON  (response) in
                            let json = response.result.value
                            DDLogDebug("Status post complete \(json)")
                            dispatch_async(dispatch_get_main_queue(),
                                handler(result: json, error: nil)
                            )
                        
                    case .Failure(let encodingError):
                        DDLogError("Failed to post: \(encodingError)")
                        handler(result: nil, error: NSError(domain: "failed response", code: 123, userInfo: nil))
                    
                
            )
        

现在的问题是服务器想要一个图像数组,并在第 0 行的 Unknown 中向我们提供错误 Missing boundary in multipart/form-data POST data 。所以上传代码有问题,但我不能弄清楚什么。在邮递员中,它只是一个数组,它工作正常。我想当我循环浏览图片并给出相同的名称时,它会像一个数组一样。

【问题讨论】:

【参考方案1】:

我忘了给文件名添加索引这是解决办法

  if let pictures = pictures 
                for (index, image) in pictures.enumerate() 
                    if let imageData = UIImageJPEGRepresentation(image, 1) 
                        multipartFormData.appendBodyPart(data: imageData, name: "pictures[\(index)]", fileName: "picture", mimeType: "image/jpeg")
                    
                
            

【讨论】:

以上是关于alamofire 上传图像数组不起作用的主要内容,如果未能解决你的问题,请参考以下文章

带有 MultiPart 表单数据中的参数的图像上传在 Alamofire 4.0 中不起作用

使用 Alamofire 上传具有 base64String 编码的多个图像的数组

使用 alamofire 发布 form_data 数据不起作用

iOS - Alamofire v2 基本身份验证不起作用

科尔多瓦:拍照后上传图像不起作用

科尔多瓦:拍照后上传图像不起作用