2017-12-12 1 views
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を作成することはできません。どうすればこの問題を解決できますか?

答えて

0

私の間違いはわかった。両方のファイルの名前が同じで、なぜこのエラーが発生したのですか。これが他の人を助けることを願っています。

関連する問題