이미지를 업로드하려고하지만 매개 변수와 헤더도 전달해야하며 매개 변수에 대해 Google로부터 도움을 받았지만 헤더를 전달하는 방법도 얻지 못했습니다. 아래의 코드를 전달하면 안내하십시오.Alamofire를 사용하여 매개 변수와 헤더가 포함 된 갤러리에서 이미지 업로드
아래는 내 코드입니다 : 위의 코드
if (request.requestType == "Multipart")
{
var strToken : String = ""
if let access_token = UserDefaults.standard.string(forKey: "auth_token"){
let tokenValue = String(format: "Token %@", access_token);
strToken = tokenValue
}
let headers: HTTPHeaders = [
"Authorization": strToken,
"Content-Type": "multipart/form-data"
]
let img = request.image
let imgData = UIImageJPEGRepresentation(img, 0.2)!
do{
let strURL = try strCompleteURL.asURL()
Alamofire.upload(multipartFormData: { multipartFormData in
multipartFormData.append(imgData, withName: "image_path",fileName: "file.jpg", mimeType: "image/jpg")
for (key, value) in params {
multipartFormData.append(value.data(using: String.Encoding.utf8.rawValue)!, withName: key)
}
},
to:strURL)
{ (result) in
switch result {
case .success(let upload, _, _):
upload.uploadProgress(closure: { (progress) in
print("Upload Progress: \(progress.fractionCompleted)")
})
upload.responseJSON { response in
if response.result.isSuccess {
print(response.result.value as Any)
if let data = response.data{
self.response.responseCode = response.response?.statusCode
self.processResult(data);
}
}
}
case .failure(let encodingError):
print(encodingError)
}
}
}
catch{
}
이미지를 업로드하지만가 없기 때문에 헤더의 성공을 시도뿐만 아니라, 헤더 및 매개 변수를 전달하는 방법을 안내하시기 바랍니다.
감사 Alamofire .upload()
기능을 사용하면 사용하는 것보다 가능한 더 많은 매개 변수를 가지고이
func uploadImage(image:UIImage, url:String, _ successBlock:@escaping (_ response: JSON)->Void , errorBlock: @escaping (_ error: NSError) -> Void){
let path = baseUrl + url
print(path)
let headers = ["authorization": AppData().token]
let imgData = UIImageJPEGRepresentation(image, 0.2)!
let URL = try! URLRequest(url: path, method: .post, headers: headers)
Alamofire.upload(multipartFormData: { (multipartFormData) in
multipartFormData.append(imgData, withName: "image",fileName: "file.jpg", mimeType: "file")
for (key, value) in params {
multipartFormData.append(value.data(using: String.Encoding.utf8.rawValue)!, withName: key)
}
}, with: URL) { (result) in
switch result {
case .success(let upload, _, _):
upload.uploadProgress(closure: { (progress) in
print("Upload Progress: \(progress.fractionCompleted)")
})
upload.responseJSON { response in
print(response.result.value)
if let value = response.result.value {
let json = JSON(value)
successBlock(json)
}
}
case .failure(let encodingError):
print(encodingError)
errorBlock(encodingError as NSError)
}
}
}
문제를 갈 것 곳의 최선 가정이 될 것입니다! URLRequest (url : 경로, 메서드 : .post, headers : headers) –
어떤 문제가 발생 했습니까? –
api에서 응답을 얻고 있습니다 오류 : responseSerializationFailed (Alamofire.AFError.ResponseSerializationFailureReason.jsonSerializationFailed (오류 도메인 = NSCocoaErrorDomain 코드 = 3840 "문자 0 주위에 값이 잘못되었습니다.") UserInfo = {NSDebugDescription = 문자 0 주변의 값이 잘못되었습니다.}))) ▿ 실패 : AFError ▿ responseSerializationFailed : ResponseSerializationFailureReason –