iOS: Как получить указанную c строку из данных, содержащих строки и изображение? - PullRequest
0 голосов
/ 15 апреля 2020

У меня есть тот код, который добавляет значения к телу:

let body = NSMutableData()
let mimetype = "image/jpg"

//define the data post parameter

body.append("--\(boundary)\r\n".data(using: String.Encoding.utf8)!)
body.append("Content-Disposition:form-data; name=\"eventId\"\r\n\r\n".data(using: String.Encoding.utf8)!)
body.append("\(eventId)\r\n".data(using: String.Encoding.utf8)!)

body.append("--\(boundary)\r\n".data(using: String.Encoding.utf8)!)
body.append("Content-Disposition:form-data; name=\"contactId\"\r\n\r\n".data(using: String.Encoding.utf8)!)
body.append("\(contactId)\r\n".data(using: String.Encoding.utf8)!)

body.append("--\(boundary)\r\n".data(using: String.Encoding.utf8)!)
body.append("Content-Disposition:form-data; name=\"type\"\r\n\r\n".data(using: String.Encoding.utf8)!)
body.append("\(type)\r\n".data(using: String.Encoding.utf8)!)

body.append("--\(boundary)\r\n".data(using: String.Encoding.utf8)!)
body.append("Content-Disposition:form-data; name=\"file\"; filename=\"\(fileName)\"\r\n".data(using: String.Encoding.utf8)!)
body.append("Content-Type: \(mimetype)\r\n\r\n".data(using: String.Encoding.utf8)!)
body.append(image_data!)
body.append("\r\n".data(using: String.Encoding.utf8)!)

body.append("--\(boundary)--\r\n".data(using: String.Encoding.utf8)!)

request.httpBody = body as Data

Как преобразовать его в строку? Я хотел бы получить границу, но невозможно сделать это.

Когда я это делаю, меня это ноль: let test = String(data: body as Data, encoding: .utf8)

Спасибо заранее.

1 Ответ

1 голос
/ 15 апреля 2020

Если вам нужна ваша граница, вы должны создать ее верхний и нижний колонтитулы в отдельном объекте от данных вашего изображения:

let boundary = UUID().uuidString
let eventId = "your event ID"
let contactId = "your contact ID"
let type = "your type string"
let mimetype = "image/jpg"
let fileName = "the file name"
let imageData = Data() // your image data
let boundaryHeader = Data("""
--\(boundary)\r\n
Content-Disposition:form-data; name=\"eventId\"\r\n\r\n
\(eventId)\r\n
--\(boundary)\r\n
Content-Disposition:form-data; name=\"contactId\"\r\n\r\n
\(contactId)\r\n
--\(boundary)\r\n
Content-Disposition:form-data; name=\"type\"\r\n\r\n
\(type)\r\n
--\(boundary)\r\n
Content-Disposition:form-data; name=\"file\"; filename=\"\(fileName)\"\r\n
Content-Type: \(mimetype)\r\n\r\n
""".utf8)

let boundaryFooter = Data("""
\r\n
--\(boundary)--\r\n
""".utf8)

let body = boundaryHeader + imageData + boundaryFooter

var request = URLRequest(url: URL(string: "http://www.example.com/whatever")!)
request.httpBody = body

print(String(data: boundaryHeader, encoding: .utf8) ?? "nil")

Это напечатает:

Content-Disposition: форм-данных; name = "contactId"

ваш контактный идентификатор

- 2583374D-68AF-4EE1-96A5-740CCA17C51D

Content-Disposition: form-data; name = "type"

строка вашего типа

- 2583374D-68AF-4EE1-96A5-740CCA17C51D

Content-Disposition: form-data; Name = "файл"; filename = "имя файла"

Тип содержимого: image / jpg

...