我的问题如下。我有一个非常简单的网站,如下所示:
'在表格中输入文字。'
'点击提交 - 数据通过一个简单的RScript运行,并从另一个网页中的R输出到屏幕。'
如果我手动将数据输入网站,这可以正常工作,但我希望能够使用curl以编程方式执行此操作。页面的代码位于问题的底部。
我觉得这个问题可能有所帮助,但我无法看到如何将其与我想要做的事情联系起来...... Posting data to web forms using submit buttons from R但我不想做如果可以避免,可以使用R.
最终我希望能够从文件中检索数据来执行此操作,但如果我能使用从CURL输入的文本,我会感到高兴。
以下是我所做的尝试及其输出(据我所知,数据已正确上传但未存储在表格中以传递给textareascanner)。我以某种方式输入URL时是否应该指向表单?或者使用不同的http方法?谢谢你的帮助。
尝试从命令行使用数据输入:
> curl -X POST -v --data "MyText=123T&press=OK" http://ADDRESS/cgi-bin/R/mdmSubmit
> * upload completely sent off: 21 out of 21 bytes
> Error in (function () : unused arguments (MyText = "123", press = "submit")
我尝试从文件中读取数据:
curl -X POST -v --form MyText=@C:\DATA\test.txt --form press=OK http://ADDRESS/cgi-bin/R/mdmFileSubmit
> POST /cgi-bin/R/mdmFileSubmit HTTP/1.1
> Content-Length: 293
Error in (function () :
unused arguments (MyText = list(filename = "tester.txt", tempfile = "/tmp/Rtmp
4pk5LV/Multipart584b104386fb", content_type = "text/plain", head = "Content-Disp
osition: form-data; name=\"MyText\"; filename=\"tester.txt\"\r\nContent-Type: te
xt/plain"), press = "OK")
FastRWeb脚本:
run <- function() {
out("<!doctype html><html lang='en'><head>",
"<meta charset='UTF-8'/></head><body>",
sep = "", eol = "")
out("<form method='post' action='textareascanner' ",
"enctype='multipart/form-data' name='form'>", sep = "", eol = "")
out("<textarea name='MyText' rows=15 cols=80></textarea>")
out("<br/><input type='submit' name='press' value='OK' /></form>")
out("</body></html>")
done()
}
它重定向到的页面:
run <- function(MyText) {
# HTML
out("<!doctype html><html lang='en'><head>",
"<meta charset='UTF-8'/></head><body>", sep = "", eol = "")
# Retrieve the data in a 'multipart/form-data' form
if (grep("^multipart", request$c.type)) {
pars <- parse.multipart()
}
# Scan the text
try(fullText <- scan(textConnection(pars$MyText),character(0),sep="\n"))
# HTML output
if (exists("fullText")) {
oprint(fullText)
}
out("</body></html>")
done()
}