微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用RCurl :: getURL从安全FTP获取数据

如何解决使用RCurl :: getURL从安全FTP获取数据

我的组织建立了一个FTP服务器,该服务器保存有读取Shiny应用程序所需的数据。我能够通过以下方式成功连接并获取终端中的写入文件

curl --ftp-ssl ftp://<HOSTNAME>:<PORT_NUM> --user "<MY_USER>:<MY_PW>" -o Wellness\ Quarantine\ and\ Isolation.csv

但是,由于它是FTPS而不是FTP,因此我最艰难的尝试是使用RCurl软件包将其读入R。当我尝试时,我能够进入,但是由于SSL握手失败而出现了530错误

library(RCurl)

opts <- curlOptions(
  dirlistonly = TRUE,sslversion = 6L,verbose = TRUE,ftp.use.epsv = FALSE,ssl.verifypeer=TRUE
  
)

x <- getURL("ftp://<HOSTNAME>:<PORT_NUM>",userpwd = "<MY_USER>:<MY_PW>",.opts = opts)

enter image description here

使用curl包使我更接近一点,但是我无法弄清楚如何真正提取文件,只是看到元数据

#using curl package - better maintained
library(curl)
h <- curl::new_handle(ftp_use_epsv=FALSE,dirlistonly=TRUE,crlf=TRUE,ssl_verifypeer=FALSE,ftp_response_timeout=30)
curl::handle_setopt(h,use_ssl = 3)

tmp <- tempfile()
curl::curl_download("ftp://<HOSTNAME>:<PORT_NUM>",handle = h,tmp)

readLines(tmp)

解决方法

经过更多的浏览和抓挠后,此操作成功了!!!
(只需将ftp.ssl = TRUE添加到getURL()即可)

library (RCurl)

# Input #
protocol <- "ftp"
server <- "<HOSTNAME>:<PORT_NAME>"
userpwd <- "<MY_USER>:<MY_PW>"
tsfrFilename <- "/Wellness\ Quarantine\ and\ Isolation.csv" #you can transfer other kinds,like text,as well.

# Run #
## Download Data
url <- paste0(protocol,"://",server,tsfrFilename)
data <- getURL(url = url,userpwd=userpwd,ftp.ssl = TRUE)


## read File to csv
quar_iso <- readr::read_csv(data)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?