我正在尝试使用本地.png文件作为此javascript函数中的函数参数将其传递给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)
}
})
}
此函数为我提供statusCode Error 400
。
请求的formData部分只读入两个本地.png文件。当我在OpenCPU测试页面上尝试这个时,它通过上传这两个文件来工作。我只是无法弄清楚如何将文件作为参数正确地传递给请求。
更新
我发现请求本身没问题。我从OpenCPU得到错误:
file.copy(x$tmp_name, basename(x$name)) is not TRUE
我尝试在base64中对表单数据进行编码但是后来我收到了这个错误:
In call:
.rasterObjectFromFile(x, band = band, objecttype = "RasterLayer",
...)
现在,数据被发送到R,但由于编码,R无法从中创建RasterLayer。我怎么能解决这个问题?
答案 0 :(得分:0)
我发现是我的错误。两个文件都命名相同,这就是为什么会出现这个错误。希望这会有助于其他人。