簡體   English   中英

swift4中的alamofire中的多部分表單數據請求?

[英]multipart form data request in alamofire in swift4?

您好,我是swift4的新手,並嘗試用swift4語言調用alamofire庫的多部分表單數據請求嗎? 這是我的代碼

Alamofire.upload(multipartFormData: { multipartFormData in
            multipartFormData.append("1422".data(using: String.Encoding.utf8)!, withName: "u_id")
            multipartFormData.append("How???".data(using: String.Encoding.utf8)!, withName: "firstname")
            multipartFormData.append("We are woking on it!!".data(using: String.Encoding.utf8)!, withName: "description")
        }, to: "URL_TOcall", encodingCompletion: { result in
            print("result  = \(result)")
            switch result {
            case .success(request: let request, streamingFromDisk: false, streamFileURL: nil):
                //Success code
                break

            case .failure:
                print("failed api calling")
                break


            case .success(let request, true, _):
                //Code here
                break

            case .success(let request, _, _):
                // Code here
                break
            }


        })
}

如果由於未上傳圖像數據而面臨問題

Alamofire.upload(multipartFormData: { multipartFormData in
            // MISSING THIS LINE
            if let imageData = UIImagePNGRepresentation(yourimage) {
                multipartFormData.append(imageData, withName: "", fileName: "filename\(Date().timeIntervalSince1970)")
            }

            multipartFormData.append("1422".data(using: String.Encoding.utf8)!, withName: "u_id")
            multipartFormData.append("How???".data(using: String.Encoding.utf8)!, withName: "firstname")
            multipartFormData.append("We are woking on it!!".data(using: String.Encoding.utf8)!, withName: "description")
    }, to: "URL_TOcall", encodingCompletion: { result in
        print("result  = \(result)")
         switch result {
            case .success(let request, _,  _):
                print(request)
                request.responseJSON(completionHandler: { (resonse) in
                    print(resonse)

                })


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

    })
}

我已經解決了我的問題,這太愚蠢了,我沒有做,但是在添加allowLossyConversion之后:將字符串轉換為false可以解決問題。

{
 //corrected indentation for code

 Alamofire.upload(multipartFormData: { multipartFormData in
        multipartFormData.append("1422".data(using: String.Encoding.utf8, allowLossyConversion: false)!, withName: "u_id")
        multipartFormData.append("How???".data(using: String.Encoding.utf8, allowLossyConversion: false)!, withName: "firstname")
        multipartFormData.append("We are woking on it!!".data(using: String.Encoding.utf8, allowLossyConversion: false)!, withName: "description")
    }, to: "URL_TOcall", encodingCompletion: { result in
        print("result  = \(result)")
        switch result {
        case .success(request: let request, streamingFromDisk: false, streamFileURL: nil):
            //Success code
            break

        case .failure:
            print("failed api calling")
            break


        case .success(let request, true, _):
            //Code here
            break

        case .success(let request, _, _):
            // Code here
            break
        }
    })
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM