[swift] Swift ObjectMapper를 사용한 파일 업로드 처리 방법은?
파일 업로드는 웹 애플리케이션 개발에서 자주 사용되는 기능 중 하나입니다. Swift에서 파일을 업로드하고 서버로 전송하는 방법을 배우려면 ObjectMapper를 사용하여 JSON 데이터를 매핑하는 방법을 알아야 합니다. 여기서는 Swift ObjectMapper를 사용한 파일 업로드 처리 방법을 소개하겠습니다.
- ObjectMapper 설치
먼저, ObjectMapper를 설치해야 합니다. Swift Package Manager를 사용하여 간단하게 설치할 수 있습니다. 프로젝트의 패키지 매니페스트 파일에 다음을 추가하세요.
dependencies: [
.package(url: "https://github.com/tristanhimmelman/ObjectMapper.git", from: "4.2.0")
]
- 모델 클래스 생성
파일 업로드 시에는 업로드할 파일의 정보를 담고 있는 모델 클래스가 필요합니다. 예를 들어, 파일의 이름과 MIME 타입을 저장하는 File 모델 클래스를 생성하세요.
import ObjectMapper
class File: Mappable {
var name: String?
var mimeType:String?
required init?(map: Map) {
}
func mapping(map: Map) {
name <- map["name"]
mimeType <- map["mimeType"]
}
}
- 파일 업로드 요청 생성
이제 파일 업로드를 위한 URLRequest를 생성해야 합니다. 아래의 코드를 사용하여 파일 경로와 업로드할 서버의 URL을 설정합니다.
import Alamofire
let url = "http://example.com/upload"
let fileURL = URL(fileURLWithPath: "/path/to/file")
let fileName = fileURL.lastPathComponent
let mimeType = "application/octet-stream"
var request = try! URLRequest(url: url, method: .post)
request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")
Alamofire.upload(multipartFormData: { formData in
// 파일 데이터 추가
formData.append(fileURL, withName: "file", fileName: fileName, mimeType: mimeType)
}, with: request, encodingCompletion: { encodingResult in
switch encodingResult {
case .success(let upload, _, _):
upload.responseJSON { response in
// 업로드 성공 시 처리할 코드
}
case .failure(let encodingError):
// 업로드 실패 시 처리할 코드
}
})
- 업로드 결과 처리
업로드가 성공하면 서버에서 응답을 받게 됩니다. ObjectMapper를 사용하여 JSON 데이터를 매핑하여 필요한 작업을 수행할 수 있습니다. 아래의 코드를 예시로 살펴봅시다.
func handleUploadResponse(data: Data) {
if let jsonData = try? JSONSerialization.jsonObject(with: data, options: .allowFragments) as? [String: Any] {
if let file = Mapper<File>().map(JSON: jsonData) {
// 서버에서 받은 데이터를 사용하여 파일 정보를 처리합니다.
print(file.name)
print(file.mimeType)
}
}
}
이와 같이 Swift ObjectMapper를 사용하여 파일 업로드 처리를 할 수 있습니다. ObjectMapper는 JSON 데이터를 객체로 변환하는 작업을 쉽게 해주는 라이브러리이므로 파일 업로드 외에도 다른 데이터 형식에 대해서도 유용하게 활용할 수 있습니다.