如何在Rscript中使用GET POST方法?

时间:2016-08-27 23:33:55

标签: html r ubuntu cgi rscript

我正在尝试将我的R代码实​​现为Web应用程序。我发现我们可以在apache中执行上面的CGI脚本。我在我的Ubuntu系统中安装了apache2,然后使用sudo a2enmod cgi启用了CGI并重新启动了apache服务器sudo service apache2 restart

之后我创建了一个shell脚本index.sh使其成为可执行文件chmod 755 index.sh并将脚本移动到cgi-bin文件夹sudo mv index.sh /usr/lib/cgi-bin/

index.sh

#!/usr/bin/Rscript

cat("Content-type: text/html\n\n")
cat("<html>")
cat("<body>")
cat("<p><em>Hello</em>, world!</p>")
v <- round(runif(10)*100, 0)  
cat("<p>", v, "</p>")
cat("</body>")
cat("</html>")

然后访问了http://localhost/cgi-bin/index.sh并给出了成功的结果

  

你好,世界!

     

53 90 25 67 2 29 48 28 91 49

但是我不想在脚本中传递varibles,而是要求用户(作为文本框提交)输入随机数生成的变量

像这样的事情

Range=user defined integer from textbox
Length=user defined integer from textbox
v <- round(runif(Length)*Range, 0)  

我该怎么做?

编辑1

我到处寻找解决这个问题的方法,但到目前为止,我可以获得服务器环境变量。

#!/usr/bin/Rscript

cat("Content-type: text/html\n\n")
cat("<html>")
cat("<body>")
cat("<p><em>Hello</em>, world!</p>")
cat("<form action='http://localhost/cgi-bin/index.sh' method='POST'>
  Range:<br>
  <input type='number' name='range' value='100'>
  <br>
  Length:<br>
  <input type='number' name='length' value='10'>
  <br><br>
  <input type='submit' value='Submit'>
</form>")
cat(Sys.getenv("REQUEST_METHOD"))
if(Sys.getenv("REQUEST_METHOD")=="POST")
{
v <- round(runif(10)*100, 0)  # sample ten random integers from {0..10}
cat("<p>", v, "</p>")
}

cat("</body>")
cat("</html>")

但是当我提交结果时是纯垃圾

  

<ÍNÃ0‘I}Šáäà|QÓ|r|怢¼€¸±%YDE†ªo’¢SN;Ú™“æ-,-B§î* A   ...òÅxŸÏ×#。iô݃àùsJc€jÉ¥Ø0K48÷©UÞ|3ñ¶wOÚE~1ú9ßÁM]ÃÞߎŸL®€{szœ...pq~tLÃâ'¢   Y³áKù)«b½^Ò¹W{²ÿhñ<ñWͽå¯ìyÒÁÑÝ}¼I¹|?1 -C   v5¶{”êûÕE...zƒ] ...bƒ...¿“AOO]

0 个答案:

没有答案