Moya Multipart Upload

Sonjh1306·2023년 9월 8일

하나의 Request에 추가적으로 GIF 파일을 업로드 해야하는 상황

  • Parameters가 Body로 전달되어야 하는 경우
  • Parameters가 URL로 전달되어야 하는 경우

Target Type

public enum MyService {
    case uploadGif(Data, description: String)
}

Parameters in body

extension MyService: TargetType {
//...
    public var task: Task {
        switch self {
        case let .uploadGif(data, description):
            let gifData = MultipartFormData(provider: .data(data), name: "file", fileName: "gif.gif", mimeType: "image/gif")
            let descriptionData = MultipartFormData(provider: .data(description.data(using: .utf8)!), name: "description")
            let multipartData = [gifData, descriptionData]

            return .uploadMultipart(multipartData)
        }
    }
//...

Parameters in URL

extension MyService: TargetType {
//...
    public var task: Task {
        switch self {
        case let .uploadGif(data, description):
            let gifData = MultipartFormData(provider: .data(data), name: "file", fileName: "gif.gif", mimeType: "image/gif")
            let multipartData = [gifData]
            let urlParameters = ["description": description]

            return .uploadCompositeMultipart(multipartData, urlParameters: urlParameters)
        }
    }
//...
}
profile
iOS 개발자

0개의 댓글