在 Unity 2018 中从服务器获取图像

Get image from a server in Unity 2018

我需要在我的 Unity3D 客户端应用程序中使用 wgsi 从一个简单的服务器接收图像。我的代码现在看起来像这样:

服务器部分:

if environ['REQUEST_METHOD'] == 'GET':
        status = '200 OK'
        headers = [('Content-type', 'image/png')]
        start_response(status, headers)

        return open("./static/uploads/04b32b3b6249487fbe042cadc97748b5.png", "rb").read()

客户:

    UnityWebRequest www = UnityWebRequestTexture.GetTexture(uploadURL);

    yield return www.SendWebRequest();

    if (www.isNetworkError || www.isHttpError)
    {
        Debug.Log(www.error);
    }
    else
    {
        Debug.Log("gno");
        this.GetComponent<RawImage>().texture = DownloadHandlerTexture.GetContent(www);
    }
}

我的疑问是 UnityWebRequestTexture.GetTexture() 总是采用直接指向图像的 URL,而在我的情况下它没有,但是 GET 方法直接 returns 图像给客户。

客户端向服务器发送图像的所有 POST 方法都没有问题,而我在 Unity 编辑器中遇到 Failed to receive data 错误。

问题很简单,我没有将内容长度放在 headers 中。所以服务器部分应该是:

if environ['REQUEST_METHOD'] == 'GET':
        status = '200 OK'
        headers = [('Content-type', 'image/png')]
        img=open("./static/uploads/"+"imageName", "rb").read()
        start_response(status,[
            ('Content-type', 'image/png'),
            ('Content-Length', str(len(img))),
        ])

        return img