使用 alamofire multipart 上传图像数组

Posted

技术标签:

【中文标题】使用 alamofire multipart 上传图像数组【英文标题】:upload array of images with 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
            
    )

【问题讨论】:

并在您的服务器端正确处理照片 [] 数组?这也是***.com/questions/41499768/… 的副本 我已经在服务器端检查过了,我看到了重复的问题,但是没有用,所以我发布了这个问题 【参考方案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 出色的工作......

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

带有参数和标题的 Alamofire Multipart-form 图像上传 - Swift

如何使用 Alamofire 5.0.0-beta.3 (Swift 5) 上传图片(多部分)

如何在 multiformData 的 alamofire 中上传文件?

Alamofire 4 swift 3 上传带有标题的 MultipartFormData 未发布

Swift 4:如何使用 Alamofire 在参数中发布文件?

上传Multipart swift Image Upload内部服务器错误500作为响应