I'm new in Swift,and have some problem with sending an image to api, from MacOS app. I try with lot of codes, this one is(as I think) most correct, but it doesn't work:
func mimeTypeForPath(path: String) -> String {
let url = NSURL(fileURLWithPath: path)
let pathExtension = url.pathExtension
if let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension! as NSString, nil)?.takeRetainedValue() {
if let mimetype = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType)?.takeRetainedValue() {
return mimetype as String
}
}
return "application/octet-stream";
}
func sendScreenshoot(url: String){
let img = NSImage(byReferencingFile: home.path)
guard let uploadData = try? img?.tiffRepresentation else {
return
}
let mimetype = mimeTypeForPath(path: home.path)
print(mimetype)
let boundary = "Boundary-\(UUID().uuidString)"
print(boundary)
var request = URLRequest(url: URL(string: url)!)
request.httpMethod = "POST"
request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")
var body = Data()
body.appendString("--\(boundary)\r\n")
body.appendString("Content-Disposition: form-data; name=\"screenshot\"; filename=\"screenshot.png\"\r\n")
body.appendString("Content-Type: \(mimetype)\r\n\r\n")
body.append(uploadData!)
body.appendString("\r\n")
body.appendString("--\(boundary)--\r\n")
request.httpBody = body
URLSession.shared.dataTask(with: request, completionHandler: { (data, response, error) -> Void in
print(error)
}).resume()
}
What is the best way to send files(images) with swift 4 Mac OS(without Alamofire)?