【问题标题】:upload array of images with alamofire multipart使用 alamofire multipart 上传图像数组
【发布时间】:2019-02-04 11:26:49
【问题描述】:

我使用 alamofire multipart 将图像数组上传到服务器它仅上传第一张图像(数组计数的次数)并且不上传其余图像,我在从图像选择器获取图像之前和之后检查所有内容图像到多部分

extension profileViewController{
@objc private func UploadImage()
{

    let headers = ["Authorization": "Bearer \(AuthService.instance.Auth_Token)"]
    Alamofire.upload(multipartFormData: { multipartFormData in
        if self.ImageArray?.isEmpty == false{
            for (index, image) in self.ImageArray!.enumerated(){
                print(index)
                var imageData = image.jpegData(compressionQuality: 0.6)
                print(imageData)
                multipartFormData.append(imageData!, withName: "photos[]", fileName: "\(self.RandomString(length: 10)).jpeg",mimeType: "image/jpeg")
                print(imageData)
                imageData?.removeAll()
            }
        }else{
            return
        }
    }, usingThreshold:UInt64.init(),
       to: "http://couponsub.farid.azq1.com/api/save-user-photos"/*upload_imageUrl*/, //URL Here
        method: .post,
        headers: headers, //pass header dictionary here
        encodingCompletion: { (result) in
            switch result {
            case .success(let upload, _, _):
                print("the status code is :")
                upload.uploadProgress(closure: { (progress) in
                    print(progress.fractionCompleted)
                    //self.ProgressBar.progress = CGFloat(Float(progress.fractionCompleted))

                })
                upload.responseJSON { response in
                    if response.result.isSuccess == true{
                        KRProgressHUD.dismiss()
                    }
                    print("the resopnse code is : \(String(describing: response.response?.statusCode))")
                    let json = try! JSON(data: response.data!)
                    print(json)

                }
                break
            case .failure(let encodingError):
                print("the error is  : \(encodingError.localizedDescription)")
                break
            }
    })
}

}

【问题讨论】:

  • 并在您的服务器端正确处理照片 [] 数组?这也是stackoverflow.com/questions/41499768/… 的副本
  • 我已经在服务器端检查过了,我看到了重复的问题,但是没有用,所以我发布了这个问题

标签: swift alamofire multipart


【解决方案1】:
func uploadMultipleImages(imagesData:[Data]){
    Alamofire.upload(multipartFormData: { multipartFormData in
        // import image to request
        for imageData in imagesData {
            multipartFormData.append(imageData, withName: "\(imageParamName)[]", fileName: "\(Date().timeIntervalSince1970).jpeg", mimeType: "image/jpeg")
        }
        for (key, value) in parameters {
            multipartFormData.append(value.data(using: String.Encoding.utf8)!, withName: key)
        }
    }, to: urlString,

       encodingCompletion: { encodingResult in
        switch encodingResult {
        case .success(let upload, _, _):
            upload.responseJSON { response in

            }
        case .failure(let error):
            print(error)
        }

    })
}

【讨论】:

  • 感谢您的回答,它仍然上传第一张图片的时间数组计数
  • 检查每个文件的文件名都不相同 --- 文件名每次都必须是唯一的
  • 为 meee 出色的工作......
猜你喜欢
  • 2018-11-09
  • 2015-10-11
  • 2017-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-10
  • 1970-01-01
  • 2017-06-19
相关资源
最近更新 更多