繁体   English   中英

使用opencpu将本地图像发送到R函数

[英]Send local image to R function using opencpu

我正在尝试使用本地.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。 我该如何解决?

我发现是我的错误。 这两个文件的名称相同,这就是为什么发生此错误的原因。 希望这会帮助别人。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM