Когда я загружаю файл на наш сервер с slim (3.x), сервер всегда отвечает «недопустимый запрос», тип содержимого для POST-запросов должен быть x-www-form-urlencoded «хотя он должен быть отправлен с использованием« content-type: multipart / form-data », потому что он содержит файлы.
Я попробовал точно такой же код с фрагментом PHP без slim, который работает абсолютно нормально.На тонком сервере он даже не запускается из-за ошибки.
{ (...)
request = NSMutableURLRequest(url: url);
request.httpMethod = "POST";
let boundary = generateBoundaryString()
request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")
request.httpBody = createBodyWithParameters(params, files: files, boundary: boundary) as Data (...)
(...)
}
func createBodyWithParameters(_ parameters: [String: String]?, files: [uploadFile], boundary: String) -> NSData {
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")
}
}
for file in files {
let filename = file.name
let filePathKey = file.fileKey
let mimetype = file.mimetype
let data = file.file
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(data)
body.appendString("\r\n")
body.appendString("--\(boundary)--\r\n")
}
return body
}
При запуске Сервер отвечает неверный запрос, тип содержимого для POST-запросов должен быть x-www-form-urlencoded и не выполняет код маршрута.