2017-09-29 3 views
0

내 요청과 함께 매개 변수로 이미지를 보내려고합니다. 아래 코드를 사용하여 PUT 요청을 호출했지만 이미지를 본문에 추가하는 방법을 알지 못합니다.swift3의 이미지를 서버에 업로드

func myImageUploadRequest() 
    { 
     let headers = [ 
      "content-type": "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW", 
      "cache-control": "no-cache" 
     ] 
     let parameters = [ 
      [ 
       "name": "Name", 
       "value": "Swift" 
      ], 
      [ 
       "name": "Key", 
       "fileName": "123.png" 
//UIImagePNGRepresentation(myImageView.image!) 

      ] 
     ] 

     let boundary = "----WebKitFormBoundary7MA4YWxkTrZu0gW" 

     var body = "" 
     var error: NSError? = nil 
     do{ 
     for param in parameters { 
      let paramName = param["name"]! 
      body += "--\(boundary)\r\n" 
      body += "Content-Disposition:form-data; name=\"\(paramName)\"" 
      if let filename = param["fileName"] { 
       let contentType = param["content-type"]! 
       let fileContent = try String(contentsOfFile: filename as! String, encoding: String.Encoding.utf8) 
       if (error != nil) { 
        print(error) 
       } 
       body += "; filename=\"\(filename)\"\r\n" 
       body += "Content-Type: \(contentType)\r\n\r\n" 
       body += fileContent 
      } else if let paramValue = param["value"] { 
       body += "\r\n\r\n\(paramValue)" 
      } 
     } 
     // }//do 


     let request = NSMutableURLRequest(url: NSURL(string: "http://——----docUpload/MediaUpload/")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) 
     request.httpMethod = "PUT" 
     request.allHTTPHeaderFields = headers 
     // request.httpBody = postData as Data 
     let session = URLSession.shared 
     let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in 
      if (error != nil) { 
       print(error) 
      } else { 
       let httpResponse = response as? HTTPURLResponse 
       print(httpResponse) 
      } 
     }) 

     dataTask.resume() 
    } 

     catch { 
     } //new 

} 

많은 예제를 보았지만 시도했지만 직접 구현할 수는 없습니다. 제 코드를 확인하고 저를 도우십시오.

+0

PUT 방법을 사용 하시겠습니까? POST 메서드로 시도하십시오 – Firoj

+0

PUT 메서드 –

+0

나는 파일 첨부 코드가 OK라고 생각합니다. 서버 측에서도 으로 확인했는데 1 주일도 보내지 만 문제는 서버 측에 있었기 때문에 – Firoj

답변

0

하나의 옵션은 이미지를 Base64로 인코딩 한 다음 json에 문자열로 포함시키는 것입니다. 이 answer은 javascript를 나타내지 만 일반적으로이 방법의 장점과 한계를 설명합니다.

문법 검사에 필요한 모든 가능한 옵션이 나와있는 answer을 확인하십시오.하지만 아래 코드는 요청 본문에 추가 할 수있는 파일 콘텐츠를 제공해야합니다.

if let image = UIImage(named:"imageNameHere"), 
    let imageData = UIImagePNGRepresentation(image) { 

    let fileContent = imageData.base64EncodedString(options: .lineLength64Characters) 
} 
관련 문제