Как отправить файл на сервер с помощью multipart / form-date через Swift

Как отправить файл на сервер, используя язык Swift? Я отправляю файл на сервер, а глобальная переменная $ _FILES (PHP) не видит загруженный файл. В этом случае, если я отправлю запрос из любого другого пакета отправителя (например, ARC). Затем глобальный массив успешно отображает переданный POST файловым методом. Что случилось с этим ??

            // SEND DATA
            let boundary = "--------------------------684819564013531921146535"

            data = AppDelegate.createBody(boundary: boundary,
                                          data: data,
                                          mimeType: "image/png",
                                          filename: "FF4D00-0.8.png")

            let headers = [
                "Content-Type":"multipart/form-data; boundary=\(boundary)",
                "Content-Length":"\(data.count)"
            ]

            HttpURLConnection.request(type: 1, command: "upload/img", headers: headers, body: data, complition: { (error, data) in
                if error == nil && data != nil {                   
                      print(data)                                   
                }                                                    
             })

Вот функция, которая создает тело запроса

// create body for http request
static func createBody(boundary: String,
                data: Data,
                mimeType: String,
                filename: String) -> Data {

    var body = Data()
    body.append("\(boundary)\r\n".data(using: String.Encoding.utf8, allowLossyConversion: true)!)
    body.append("Content-Disposition: form-data; name=\"file\"; filename=\"FF4D00-0.8.png\"\r\n".data(using: String.Encoding.utf8, allowLossyConversion: true)!)
    body.append("Content-Type: \(mimeType)\r\n\r\n".data(using: String.Encoding.utf8, allowLossyConversion: true)!)
    body.append("P".data(using: String.Encoding.utf8, allowLossyConversion: true)!)
    body.append("\r\n".data(using: String.Encoding.utf8, allowLossyConversion: true)!)
    body.append(boundary.appending("--").data(using: String.Encoding.utf8, allowLossyConversion: true)!)

    print("size is \(body.count)")

    return body as Data
}

Вот работа:

пример результата отправлен файл через ARC

Неужели когда вопрос касается чего-то, не имеющего шаблона, тогда никто не может ответить?

My Name 13.08.2018 16:33
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
1
477
1

Ответы 1

Я использую библиотеку Аламофайр. Хорошо задокументировано, см., Например:

let imageData = UIImagePNGRepresentation(image)!

Alamofire.upload(imageData, to: "https://httpbin.org/post").responseJSON { response in
    debugPrint(response)
}

Другие вопросы по теме