【发布时间】:2023-04-05 01:48:02
【问题描述】:
我正在开发一个 iPad 应用程序。在这个任务中,我成功地将图像转换为 PDF 文件。
现在我需要通过 HTTP 请求将转换后的 PDF 文件保存在服务器端。
当我发送 HTTP 请求时,我收到错误 无法读取数据,因为它的格式不正确。
我哪里错了?
我的代码
// 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 = createBody(param, filePathKey: "file", imageDataKey: pdfdata as Data, boundary: boundary)
// launc session
URLSession.shared.dataTask(with: request) { data, response, error in
// get main queue to communicate back to user
DispatchQueue.main.async(execute: {
if error == nil {
do {
let json = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as? NSDictionary
print(json)
} catch {
//Here I get error as The data couldn’t be read because it isn’t in the correct format.
}
} else {
}
})
}.resume()
// 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: attachment; name=\"\(key)\"\r\n\r\n")
body.appendString("\(value)\r\n")
}
}
let filename = "ava.pdf"
let mimetype = "application/pdf"
body.appendString("--\(boundary)\r\n")
body.appendString("Content-Type: application/pdf;name=\"ava10.pdf\"\r\n" )
body.appendString("Content-Disposition:attachment;filename=\"ava10.pdf\"\r\n")
body.append(imageDataKey)
body.appendString("\r\n")
body.appendString("--\(boundary)--\r\n")
return body as Data
}
【问题讨论】: