func postProduct(imageNamed:String, name: String, discountedPrice: Int, price: Int, currency: String, stock: Int, descriptions: String) {
// URL생성
guard let url = URL(string: "https://market-training.yagom-academy.kr/api/products") else {
return
}
// boundardy생성
let boundary = UUID().uuidString
// request생성 및 identifier와 content-Type을 값을 저장
var request = URLRequest(url: url, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 30)
request.httpMethod = "POST"
request.addValue("cd706a3e-66db-11ec-9626-796401f2341a", forHTTPHeaderField: "identifier")
request.addValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")
// imgData생성
guard let imageData = UIImage(named: imageNamed)?.jpegData(compressionQuality: 1) else {
return
}
// data생성 및 body작성 후 reuqest.httpBody에 저장 ( params, images )
var data = Data()
// params 데이터 작성
data.appendString("\r\n--\(boundary)\r\n")
data.appendString("Content-Disposition: form-data; name=\"params\"\r\n\r\n")
data.appendString("""
{
\"name\": \"\(name)\",
\"price\": \(price),
\"currency\": \"\(currency)\",
\"secret\": \"password\",
\"descriptions\": \"desc\"
}
""")
// image 데이터 작성
data.appendString("\r\n--\(boundary)\r\n")
data.appendString("Content-Disposition: form-data; name=\"images\"; filename=\"\(imageNamed).jpg\"\r\n")
data.appendString("Content-Type: image/jpg\r\n\r\n")
data.append(imageData)
data.appendString("\r\n--\(boundary)--\r\n")
request.httpBody = data
// URLSession.dataTask로 네트워크에 request 요청
self.request(request: request) {
guard let result = try? $0.get() else {
return
}
dump(result)
}
}
}
extension Data {
mutating func appendString(_ string: String) {
if let data = string.data(using: .utf8) {
self.append(data)
}
}
}
# Reference
- https://lena-chamna.netlify.app/post/uploading_array_of_images_using_multipart_form-data_in_swift/
'iOS' 카테고리의 다른 글
[iOS] Core Animation (feat. Layer, CABasicAnimation) (0) | 2022.06.21 |
---|---|
[iOS] View Drawing Cycle (0) | 2022.06.14 |
[iOS] UIImagePickerCotroller 문서 훑고 맛보기 (0) | 2022.05.25 |
[iOS] Fetching Website Data into Memory (0) | 2022.05.23 |
[iOS] File System 공식문서 톺아보기 및 간단 정리 (0) | 2022.05.16 |