Php 图像上载发送数据,但在接收端未创建文件

Php 图像上载发送数据,但在接收端未创建文件,php,ios,swift,swift3,urlsession,Php,Ios,Swift,Swift3,Urlsession,我卡住了。 不知该怎么解决它。 我正在用下面的方法从iPhone上用Swift发送一张图像。 我可以看到服务器正在通过Wireshark接收数据。 我还可以在php服务器的终端中看到我正在接收数据 这是我不知道如何处理的数据 我目前正在使用下面的php脚本来处理上传的所有内容。我使用了很多测试变量,看看是否可以弄清楚我收到了什么 public func post(data: Data, url: URL) { var request = URLRequest(ur

我卡住了。 不知该怎么解决它。 我正在用下面的方法从iPhone上用Swift发送一张图像。 我可以看到服务器正在通过Wireshark接收数据。 我还可以在php服务器的终端中看到我正在接收数据

这是我不知道如何处理的数据

我目前正在使用下面的php脚本来处理上传的所有内容。我使用了很多测试变量,看看是否可以弄清楚我收到了什么

    public func post(data: Data, url: URL)
    {
        var request = URLRequest(url: url)
        //request.addValue("filenameTest.jpg", forHTTPHeaderField: "filename")
        request.httpMethod = "POST"
        let body = createBodyWithParameters(filePathKey: "filenameTest.jpg",data: data,boundary: generateBoundaryString())
        request.setValue("Keep-Alive", forHTTPHeaderField: "Connection")
        let configuration = URLSessionConfiguration.default
        let session = URLSession(configuration: configuration,delegate: self, delegateQueue: OperationQueue.main)
        let task = session.uploadTask(with: request as URLRequest, from: body)
        task.resume()

    }
func createBodyWithParameters(filePathKey: String?, data: Data!, boundary: String) -> Data {
        var body = Data();

        let mimetype = "image/jpg"

        body.append(Data( "--\(boundary)\r\n".utf8))
        //body.append(Data( "Content-Disposition: form-data; name=\"\(filePathKey!)\"; filename=\"\(parameters!["filename"]!)\"\r\n".utf8))
        body.append(Data( "Content-Disposition: form-data; filename=\"\(filePathKey!)\"\r\n".utf8))
        body.append(Data( "Content-Type: \(mimetype)\r\n\r\n".utf8))


        body.append(data)
        body.append(Data( "\r\n".utf8))

        body.append(Data( "--\(boundary)--\r\n".utf8))

        return body
    }
    func generateBoundaryString() -> String {
        return "----Boundary---"
    }

我不知道怎么解决这个问题。我知道那里有数据,但似乎无法掌握。我试过几种方法把它和swift部分一起发送。这一个加上另外两个都有同样的问题,当我转到php端时,文件名找不到了,我甚至找不到文件的临时名称

请注意,图像数据从未保存到iPhone上的文件中,我也不打算让这种情况发生。我只需要用相机拍摄图像并发送,我现在已经完成了,但是当我试图在PHP端保存图像文件时,一切似乎都变得不可能了


就我所能看到的,$\u文件中没有内容,$\u请求和文件中都有内容,但当我尝试访问该文件时,我只得到了有线符号和问号。

我最终解决了这个问题。我的问题是,我正在生成一个新的边界,而不是在每个请求中使用相同的边界。 还有,我忘了将多部分/表单数据添加到请求的内容类型中。 还请注意--在我的createBodyWithParameters的末尾。。它们显然很重要,我不小心把它们拿走了

let boundary = generateBoundaryString()

        var request = URLRequest(url: url)
        request.httpMethod = "POST"
        request.addValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")
        let body = createHttpBody(filename:"filenametest.jpg" , objData: objData,boundary: boundary)
 $testvar = $_SERVER['HTTP_FILENAME'];
    file_put_contents("php://stdout", "\nRequested : $testvar /r/n");
    $testvar = count($_REQUEST);
    $testvar = $_REQUEST[3];
    file_put_contents("php://stdout", "\nRequested : $testvar /r/n");
    foreach($_FILES['file'] as $value){
    $testvar = ": ". $value;
    file_put_contents("php://stdout", "\nRequested: $testvar \r\n");
    }
let boundary = generateBoundaryString()

        var request = URLRequest(url: url)
        request.httpMethod = "POST"
        request.addValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")
        let body = createHttpBody(filename:"filenametest.jpg" , objData: objData,boundary: boundary)