[swift] 파일 업로드하기
파일 업로드는 애플리케이션에서 사용자가 파일을 선택하고 해당 파일을 서버로 전송하는 작업입니다. Swift를 사용하여 파일을 업로드하기 위해 다음과 같은 단계를 따를 수 있습니다.
1. 파일 선택하기
먼저, 사용자가 업로드할 파일을 선택해야 합니다. 이를 위해 iOS에서는 UIImagePickerController
를 사용할 수 있습니다. 아래의 코드는 이미지를 선택하는 예제입니다.
import UIKit
class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
let imagePicker = UIImagePickerController()
override func viewDidLoad() {
super.viewDidLoad()
imagePicker.delegate = self
}
@IBAction func selectImageTapped(_ sender: UIButton) {
imagePicker.sourceType = .photoLibrary
imagePicker.allowsEditing = false
present(imagePicker, animated: true, completion: nil)
}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
if let selectedImage = info[.originalImage] as? UIImage {
// 선택한 이미지를 서버로 업로드하는 메서드 호출
uploadImage(selectedImage)
}
dismiss(animated: true, completion: nil)
}
}
2. 파일 업로드하기
선택된 파일을 서버로 업로드하기 위해서는 URLSession
을 사용합니다. 다음은 파일을 업로드하는 예제 코드입니다.
func uploadImage(_ image: UIImage) {
guard let url = URL(string: "https://example.com/upload") else {
return
}
let boundary = "Boundary-\(UUID().uuidString)"
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")
let body = NSMutableData()
// 이미지 데이터 추가
if let imageData = image.jpegData(compressionQuality: 0.5) {
body.appendString("--\(boundary)\r\n")
body.appendString("Content-Disposition: form-data; name=\"file\"; filename=\"image.jpg\"\r\n")
body.appendString("Content-Type: image/jpeg\r\n\r\n")
body.append(imageData)
body.appendString("\r\n")
}
// POST 요청 보내기
request.httpBody = body as Data
let task = URLSession.shared.dataTask(with: request) { (data, response, error) in
if let error = error {
print("Error: \(error)")
return
}
// 서버 응답 처리
if let httpResponse = response as? HTTPURLResponse {
if httpResponse.statusCode == 200 {
// 파일 업로드 성공
print("파일 업로드 성공")
}
}
}
task.resume()
}
위의 예제 코드에서는 imageData
를 file
이라는 이름으로 서버로 전송하고 있습니다. 필요에 따라 이름이나 파일 타입을 변경할 수 있습니다.
결론
Swift를 사용하여 파일 업로드 기능을 구현하는 방법에 대해 알아보았습니다. UIImagePickerController
로 사용자에게 파일 선택을 받고, URLSession
을 사용하여 서버로 파일을 업로드할 수 있습니다. 이를 기반으로 애플리케이션에 파일 업로드 기능을 추가해보세요.
참고 자료
- Apple Developer Documentation - UIImagePickerController
- Apple Developer Documentation - URLSession