Ich versuche, in dieser Javascript-Funktion eine lokale .png-Datei als Funktionsargument zu verwenden, um es OpenCPU weitergeben müssen:senden lokales Bild R-Funktion opencpu
function processWithR(promObj) {
return new Promise((resolve, reject) => {
try {
var url = "https://public.opencpu.org/ocpu/github/amun-software/Processingservice/R/NDVI_Result";
request({
method: "POST",
uri: url,
formData: {
x:fs.createReadStream('./temp/red/' + promObj.z + '-' + promObj.x + '-' + promObj.y + '.png'),
y:fs.createReadStream('./temp/blue/' + promObj.z + '-' + promObj.x + '-' + promObj.y + '.png')
},
}, function (err, response, data) {
err = err || (response && (response.statusCode === 400 ||
response.statusCode === 502 ||
response.statusCode === 503) && response.statusCode);
if (!err) {
console.log(body);
}
});
console.log("2. Promise Processing with R");
fileSave(promObj);
resolve(promObj)
} catch (error) {
reject(error)
}
})
}
Diese Funktion ruft mir den status Error 400
.
Der formData-Teil der Anforderung liest nur zwei lokale .png-Dateien ein. Wenn ich dies auf der OpenCPU-Testseite versuche, funktioniert es, indem ich die zwei Dateien hochlade. Ich kann einfach nicht herausfinden, wie man die Dateien als Argumente richtig an die Anfrage weitergibt.
UPDATE
Ich fand heraus, dass die Anforderung selbst in Ordnung war. Ich erhalte den Fehler von OpenCPU:
file.copy(x$tmp_name, basename(x$name)) is not TRUE
Ich habe versucht, die Formulardaten in base64 zu kodieren, aber dann bekomme ich diesen Fehler:
In call:
.rasterObjectFromFile(x, band = band, objecttype = "RasterLayer",
...)
Nun werden die Daten R gesendet, sondern wegen der Die Kodierung, R kann daraus keinen RasterLayer erstellen. Wie könnte ich das lösen?