上传的UIImage base64编码
我想上传的UIView(图),但我在邮件接收空图片(来自Web服务)... Android是工作上传的UIImage base64编码
UIGraphicsBeginImageContext(self.view.bounds.size);
self.view.layer.render(in: UIGraphicsGetCurrentContext()!)
let screenShot = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
let jpegCompressionQuality: CGFloat = 1
let imgData:Data = UIImageJPEGRepresentation(screenShot!,jpegCompressionQuality)!
let lengthOfData = imgData.count
let strBase64 = imgData.base64EncodedString(options: [])
var request = URLRequest(url: URL(string: "http://myws.com/Chart.php")!)
request.httpMethod = "POST"
let postString = "data=\(strBase64)&[email protected]"
request.addValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
request.addValue("\(lengthOfData)", forHTTPHeaderField: "Content-Length")
request.httpBody = postString.data(using: String.Encoding.utf8)
let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data, error == nil else {
print("error=\(error)")
return
}
if let httpStatus = response as? HTTPURLResponse, httpStatus.statusCode != 200 {
print("statusCode \(httpStatus.statusCode)")
print("response = \(response)")
}
let responseString = String(data: data, encoding: .utf8)
print("responseString = \(responseString)")
}
task.resume()
你的代码采取的iOS的屏幕截图设备很好。我想上传的UIImage到服务器的POST请求缺乏以下的事情:
let imgData:NSData = data
let lengthOfData = imgData.length
// ENCODINGDATA - whatever encoding your server wants here
request.addValue(ENCODINGDATA, forHTTPHeaderField: "Content-Type")
request.addValue("\(lengthOfData)", forHTTPHeaderField: "Content-Length")
除此之外,最好使用AlamoFire
来处理这种复杂的服务器任务。它使它更容易。它可以这样做
let imageData = UIPNGRepresentation(image)!
Alamofire.upload(imageData, to: "https://httpbin.org/post").responseJSON { response in
debugPrint(response)
}
随意建议编辑,使其更好。请让我知道如果我的回答中有任何错误或缺点
不起作用,我修改了你的建议代码 – user1801745
是你的形象在服务器接收仍然空? – KrishnaCA
是的,使用'UIImageWriteToSavedPhotosAlbum(screenShot!,nil,nil,nil)'图像正确地存储到手机存储器 – user1801745
我认为你在这里错过了一些东西,如为httpheaderfield设置值等 – KrishnaCA