使用Swift将文件上传到具有Slim(PHP)的服务器

时间:2019-06-05 12:54:22

标签: php swift slim

当我将文件上传到运行 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 ,并且不执行路由的代码。

0 个答案:

没有答案