Skip to content

임정민 ‐ multipart form‐data

jungmin lim edited this page Dec 14, 2023 · 1 revision

🖼️ 배경

  • #238

🫠 트러블

  • 사진과 내용을 함께 보내기 위해 multipart/form-data 사용해야 했음
  • swift가 이를 지원하지 않아 직접 body를 만들어야하는 문제

🏃🏻 시도했던 방법

  • 표준에 맞춰 body를 직접 만들 수 있도록 Multipart.makeData method 구현
  • json body data와 달리, 최상단의 value 값은 ""가 그대로 들어가는 문제가 있었음

✅ 솔루션

public func makeData(boundary: String) -> Data {
        let lineBreak = "\r\n"
        var body = Data()
        
        let parameters = data.dataParameters()
        for (key, value) in parameters {
            guard let stringValue = String(data: value, encoding: .utf8) else { continue }
            body.append("--\(boundary + lineBreak)")
            body.append("Content-Disposition: form-data; name=\"\(key)\"\(lineBreak + lineBreak)")
            body.append(stringValue)
            body.append(lineBreak)
        }
        
        for media in mediaList {
            body.append("--\(boundary + lineBreak)")
            body.append("Content-Disposition: form-data; name=\"\(media.key)\"; filename=\"\(media.filename)\"\(lineBreak)")
            body.append("Content-Type: \(media.mimeType + lineBreak + lineBreak)")
            body.append(media.data)
            body.append(lineBreak)
        }
        
        body.append("--\(boundary)--\(lineBreak)")
        
        return body
    }

🔗 참고자료

🔥 HeatPick

🔨 프로젝트 소개

🫠 트러블 슈팅

1주차

2주차

3주차

4주차

5주차

🤔 기획 회의록

🤷🏻 의사 결정록

🍎 iOS

🌐 Backend

🎯 주차별 목표

🏃🏻 데일리 스크럼

1주차

2주차

3주차

4주차

5주차

6주차

🙇🏻 멘토링 일지

👀 프로젝트 현황 공유

🙋🏻 팀 회고

💪 개인 회고

1주차

2주차

3주차

4주차

5주차

📇 템플릿

Clone this wiki locally