【发布时间】:2018-06-06 21:07:26
【问题描述】:
我是 Swift 新手,在从 MacOS 应用程序向 api 发送图像时遇到了一些问题。我尝试了很多代码,这个(我认为)最正确,但它不起作用:
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()
}
用swift 4 Mac OS(不带Alamofire)发送文件(图像)的最佳方式是什么?
【问题讨论】: