在我的应用程序必须从iPad画廊销售UIImage并转换为PDF格式,保存在服务器端。
我可以选择图像并将其发送到服务器端,但后端说PDF是空的(空数据)
我还在控制台中看到警告/错误:发现扩展时遇到[discovery]错误:错误域=插件套件代码=13“查询已取消”用户信息={NSLocalizedDescription=查询已取消}
我哪里做错了?先谢谢你!
我试过的密码
//Opens gallery to select Image
func clickImage() {
let image = UIImagePickerController()
image.delegate = self
image.sourceType = UIImagePickerControllerSourceType.photoLibrary
image.allowsEditing = false
self.present(image, animated: true, completion: nil)
}
//image picker function
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
if let image = info[UIImagePickerControllerOriginalImage] as? UIImage {
scannedPhoto.image = image
} else{
print("Something went wrong")
}
self.dismiss(animated: true, completion: nil)
uploadAttachment()
}
//Convert UIImage to PDF
func createPDF(image: UIImage) -> NSData? {
let pdfData = NSMutableData()
let pdfConsumer = CGDataConsumer(data: pdfData as CFMutableData)!
var mediaBox = CGRect.init(x: 0, y: 0, width: image.size.width, height: image.size.height)
let pdfContext = CGContext(consumer: pdfConsumer, mediaBox: &mediaBox, nil)!
pdfContext.beginPage(mediaBox: &mediaBox)
pdfContext.draw(image.cgImage!, in: mediaBox)
pdfContext.endPage()
return pdfData
}
// custom body of HTTP request to upload pdf file
func createBody(_ parameters: [String: String]?, filePathKey: String?, imageDataKey: Data, boundary: String) -> Data {
let body = NSMutableData()
if parameters != nil {
for (key, value) in parameters! {
body.appendString("--\(boundary)\r\n")
body.appendString("Content-Disposition: form-data; name=\"\(key)\"\r\n\r\n")
body.appendString("\(value)\r\n")
}
}
let filename = "ava.pdf"
let mimetype = "pdf"
body.appendString("--\(boundary)\r\n")
body.appendString("Content-Disposition: form-data; name=\"\(filePathKey!)\"; filename=\"\(filename)\"\r\n")
body.appendString("Content-Type: \(mimetype)\r\n\r\n")
body.append(imageDataKey)
body.appendString("\r\n")
body.appendString("--\(boundary)--\r\n")
return body as Data
}
//Function to send converted pdf server side
func uploadAttachment() {
let pdfdata = createPDF(image: scannedPhoto.image!)
// url path to php file
let url = URL(string: "\(Config.path)/uploadAva.php")!
// declare request to this file
var request = URLRequest(url: url)
// declare method of passign inf to this file
request.httpMethod = "POST"
// param to be sent in body of request
let param = ["AppId":Config.AppID , "uuid":Config.uuid , "Id" : userId]
// body
let boundary = "Boundary-\(UUID().uuidString)"
request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")
// ... body
request.httpBody = createBodyWithParams(param, filePathKey: "file", imageDataKey: pdfdata! as Data, boundary: boundary)
// launc session
// warning I receive here
URLSession.shared.dataTask(with: request) { data, response, error in
//do anything here
}
}
2条答案
按热度按时间ws51t4hk1#
创建pdf文件数据为:
7y4bm7vi2#