Отправить локальное изображение в функцию R с помощью 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)
        }
    })

}

Эта функция получает код статуса 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 из этого. Как я мог это решить?


person PhilG    schedule 12.12.2017    source источник


Ответы (1)


Я узнал, что это была моя ошибка. Оба файла были названы одинаково, поэтому возникла эта ошибка. Надеюсь, это поможет кому-то другому.

person PhilG    schedule 11.01.2018