当我将文件上传到运行 slim (3.x)的服务器时,服务器始终响应“无效请求,POST请求的内容类型必须为x-www-form -urlencoded”(即使必须使用“ content-type:multipart / form-data”发送),因为它包含文件。
我已经尝试使用完全没有问题的PHP代码段使用完全相同的代码。在瘦服务器上,由于错误,它甚至没有开始执行。
{ (...)
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 ,并且不执行路由的代码。