Ich versuche ein Bild von Unity an meine NodeJS API zu senden, aber leider kann ich es nicht funktionieren lassen. Hier ein Auszug meiner C# -Code:POST-Anfrage mit Bild von Unity3D senden
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);
}
}
und hier der relevante Teil meiner NodeJS ein:
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...");
})
}
}
Die Anforderung gesendet wird, aber nie von der API erhalten (ich 503 falsches Gateway) . Ich versuche die gleiche Anfrage außerhalb Einheit und es scheint zu funktionieren (mit Postman: grundlegende Post-Anfrage mit Bild als Binärdatei angehängt).
Habe ich einen Fehler gemacht oder gibt es einen anderen Weg, dies zu erreichen? Danke!
EDIT: Ich löste schließlich das Problem, indem application/octet-stream
zu text/html
ändern. Wenn es eine bessere Möglichkeit gibt, Daten an Nodejs zu senden, bin ich immer noch interessiert
Oh danke Ich habe UnityWebRequest nicht gesehen, ich werde es mir ansehen. –
Ich habe mir die gleichen Dokumente angeschaut und genau das getan, was sie vorschlägt ... Ich kann es bekommen, um die POST-Anfrage zu stellen, aber es enthält keine der Daten, die ich aufnehmen möchte. Frage mich, was ich falsch mache ... – jckstl