【发布时间】:2017-03-30 06:03:32
【问题描述】:
我正在尝试从 Unity 向我的 NodeJS API 发送图像,但不幸的是我无法让它工作。这是我的 c# 代码的摘录:
private string POSTUrl = "http://myNodeJSAPI.com/upload-image";
private Dictionary<string, string> postHeader = new Dictionary<string, string>();
public WWW POST() {
WWW www;
postHeader["content-Type"] = "application/octet-stream";
postData = File.ReadAllBytes("Assets/Resources/ImageIWantToSend.png");
www = new WWW(POSTUrl, postData, postHeader);
StartCoroutine(WaitForRequest(www));
return www;
}
IEnumerator WaitForRequest(WWW www)
{
yield return www;
if (www.error == null)
{
Debug.Log("WWW Ok!: " + www.text);
}
else
{
Debug.Log("WWW Error: " + www.error);
}
}
这里是我的 nodejs one 的相关部分:
app.post('/upload-image', rawBody, function (req, res) {
console.log("File received!");
if (req.rawBody && req.bodyLength > 0) {
fs.writeFile("/tmp/ImageIWantToSend.png", req.rawBody, function (err) {
if (err) {
return console.log(err);
}
console.log("Image has been saved! Starting other things...");
})
}
}
请求已发送,但 API 从未收到(我收到 503 bad gateway)。我在 Unity 外部尝试了相同的请求,它似乎可以工作(使用 Postman:基本发布请求,图像附加为二进制文件)。
是我犯了错误,还是有其他方法可以做到这一点? 谢谢!
编辑:我终于通过将application/octet-stream 更改为text/html 解决了这个问题。如果有更好的方式将数据发送到 Nodejs 我仍然感兴趣
【问题讨论】: