임정민 ‐ multipart form‐data - boostcampwm2023/iOS04-HeatPick GitHub Wiki
🖼️ 배경
🫠 트러블
- 사진과 내용을 함께 보내기 위해 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
}
🔗 참고자료