2

質問: OpenCPUサーバーに保存されている出力ファイルを別の関数への入力として使用するにはどうすればよいですか?

背景: openCPU内で、ページの読み込みに関する統計情報でWebページを更新するために使用できるhtmlを生成 しようとしknitrています。markdown

基本的なワークフローは次のとおりです。

  1. .Rmdファイルを生成し、ローカルに保存します。
  2. AJAXを使用するWebページにアクセスして、.Rmdファイルをサーバー上のOpenCPUインスタンスにアップロードします。
  3. knitopenCPUを介して関数を使用し、関数をサーバーに保存されている*.mdファイルに変換します。
  4. markdownToHTMLサーバーに保存されているファイルの関数を使用して(への呼び出しを介して生成された適切なハッシュを渡すことによりknit)、生成されたHTMLを含むAJAX応答を受信します。
  5. 新しいHTMLでWebページを更新します。

現状では、このプロセスはステップ4まで機能していknitます。フォームリクエストPOSTを介して.Rmdファイルの受け渡しを呼び出すことができ、OpenCPUから次の応答を受け取ります。

{
"object" : "xa9eaea44e1",
"graphs" : [
    "xf31dcfe7f3"
],
"files" : {
    "figure" : "xfc55396fd8",
    "test.md" : "x7821c69f79"
}
}

ここで、は関数"test.md"を介して生成された出力ファイルです。knitここで、ハッシュを使用しようとします(この場合、次のパラメーターを使用してに"x7821c69f79"POSTします。/R/pub/markdown/markdownToHTML/ascii

file     /R/tmp/x7821c69f79/bin

HTTP 400これにより、次のメッセージとともにエラーが返されます。

cannot open URL 'http://localhost/R/store/R/tmp/x7821c69f79/bin/rds'

ただし、にGETリクエストを行うと/R/tmp/x7821c69f79/bin、の内容test.mdが返されます。したがって、への呼び出しでファイルが正しく保存されていることがわかりますknit

それで、ここで何が起こっているのですか?つまり、OpenCPUサーバーに保存されている出力ファイルを別の関数への入力として使用するにはどうすればよいですか?

4

1 に答える 1

2

うーん、/storeエラーはバグのようです。調べてみます。

test.mdたぶん、ステップ 3 で、関数が の内容を返すようにすることができますreturn(readLines(test.md))。またはさらに良いのは、出力ではなくtest.mda に出力しtmpfile()、その内容を返すことです。このようにして、出力は生のファイルではなく R オブジェクトとしてストアに格納され、file=x7821c69f79手順 4 などで引数を渡すだけで済みます。

マークダウンのサンプルアプリを見ましたか? ここここのソースを参照してください。

于 2012-10-01T20:40:44.060 に答える