2017-09-28 1 views
0

이미지를 업로드하려고하지만 매개 변수와 헤더도 전달해야하며 매개 변수에 대해 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) 

      } 
     } 

    } 

답변

3

안녕 사용한 헤더.

public func upload(
multipartFormData: @escaping (MultipartFormData) -> Void, 
usingThreshold encodingMemoryThreshold: UInt64 = SessionManager.multipartFormDataEncodingMemoryThreshold, 
to url: URLConvertible, 
method: HTTPMethod = .post, 
headers: HTTPHeaders? = nil, 
encodingCompletion: ((SessionManager.MultipartFormDataEncodingResult) -> Void)?) 
{ 
    return ... 
} 

거기에서 당신은 헤더는 사용하지 않았에 대한 매개 변수가 볼 수 있습니다 (이것은 그들의 포드 폴더에 Alamofire.swift 파일에서 볼 수있다). 모든 코드 나 자신을 실행하고 확인하지 않고

이 당신의 헤더를 시도 = URL을 할 수 이 줄을

+0

문제를 갈 것 곳의 최선 가정이 될 것입니다! URLRequest (url : 경로, 메서드 : .post, headers : headers) –

+0

어떤 문제가 발생 했습니까? –

+0

api에서 응답을 얻고 있습니다 오류 : responseSerializationFailed (Alamofire.AFError.ResponseSerializationFailureReason.jsonSerializationFailed (오류 도메인 = NSCocoaErrorDomain 코드 = 3840 "문자 0 주위에 값이 잘못되었습니다.") UserInfo = {NSDebugDescription = 문자 0 주변의 값이 잘못되었습니다.}))) ▿ 실패 : AFError ▿ responseSerializationFailed : ResponseSerializationFailureReason –

0

같은

관련 문제