0
opencpu使用してR関数に局所的な画像を送信:はOpenCPUにそれを渡すために、私はこのjavascript関数で、関数の引数としてローカルの.pngファイルを使用しようとしています
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)
}
})
}
この機能は私からstatusCode Error 400
を取得します。
リクエストのformData部分は、2つのローカル.pngファイルを読み込むだけです。 OpenCPUのテストページでこれを試してみると、2つのファイルをアップロードして動作します。私は、ファイルをリクエストに適切に引数として渡す方法を理解できません。
UPDATE
私は要求自体はOKだったことが分かりました。私はOpenCPUからエラーを取得:
file.copy(x$tmp_name, basename(x$name)) is not TRUE
私はBASE64でフォームデータをエンコードしようとしましたが、私はこのエラーを取得:
さて、データはRに送信されているIn call:
.rasterObjectFromFile(x, band = band, objecttype = "RasterLayer",
...)
、しかしのためRはこれを使ってRasterLayerを作成することはできません。どうすればこの問題を解決できますか?