将 RCurl 与带有嵌入空值的 ftp 服务器一起使用

Using RCurl with ftp server with embedded nulls

几天来我一直在处理这个问题,即使联系了网站管理员,我也没有解决它。

我想自动从 ftp 服务器下载特定文件,而不使用除 R 之外的任何软件。

userpwd = "MyUserName:MyPassword" 
url <- "ftp://arthurhou.pps.eosdis.nasa.gov/gpmdata/2014/04/01/imerg/3B-HHR.MS.MRG.3IMERG.20140401-S150000-E152959.0900.V03D.HDF5"
dat <- try(getURL(url, userpwd = userpwd,verbose=TRUE,ftp.use.epsv = FALSE))

当我运行这个时,我得到错误:

Error in curlPerform(curl = curl, .opts = opts, .encoding = .encoding) : 
  embedded nul in string:      '‰HDF\r\n2\n[=12=][=12=][=12=][=12=][=12=]\b\b[=12=][=12=]4[=12=]0[=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=]ÿÿÿÿÿÿÿÿÚá'[=12=][=12=][=12=][=12=][=12=]ÿÿÿÿÿÿÿÿ[=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=]`[=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=]OHDR[=12=]2,fÉ¿TbÉ¿TfÉ¿TbÉ¿Tà[=12=]2"[=12=][=12=][=12=][=12=][=12=][=12=]3[=12=]1[=12=][=12=][=12=][=12=][=12=][=12=][=12=]ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\n[=12=]2[=12=][=12=]1[=12=][=12=][=12=][=12=][=12=]67[=12=][=12=][=12=][=12=][=12=]1[=12=]4[=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=]4Grid[[=12=]1[=12=][=12=][=12=][=12=][=12=][=12=]54[=12=][=12=]4[=12=][=12=][=12=][=12=]3[=12=]2[=12=]ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ00[=12=][=12=][=12=][=12=]6`&[=12=][=12=][=12=][=12=][=12=]{[=12=]3[=12=][=12=][=12=][=12=][=12=][=12=][=12=]U[=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=]4î*aOHDR[=12=]2,fÉ¿TbÉ¿TfÉ¿TbÉ¿Tà[=12=]2"[=12=][=12=][=12=][=12=][=12=][=12=]3\v[=12=][=12=][=12=][=12=][=12=][=12=][=12=]Ã5[=12=][=12=][=12=][=12=][=12=][=12=]U6[=12=][=12=][=12=][=12=][=12=][=12=]{6[=12=][=12=][=12=][=12=][=12=][=12=]\n[=12=]2[=12=][=12=]1[=12=][=12=][=12=][=12=]54[=12=][=12=]4[=12=][=12=][=12=][=12=]3[=12=]1[=12=]ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ00[=12=][=12=][=12=][=12=]™c&[=12=][=12=][=12=][=12=][=12=]4[=12=]1[=12=][=12=][=12=][=12=][=12=][=12=][=12=]r[=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=]\

我已经尝试从初始 link 中删除空值,即 url <- "ftp://arthurhou.pps.eosdis.nasa.gov%2Fgpmdata%2F2014%2F04%2F01%2Fimerg%2F3B-HHR.MS.MRG.3IMERG.20140401-S213000-E215959.1290.V03D.HDF5" 但是这个 returns 和以前一样的错误。

如果有人想自己尝试,您可以在以下地址注册一个电子邮件:http://pmm.nasa.gov/data-access/downloads/gpm,然后使用该电子邮件作为用户名和密码。

这对我有用:

library(httr)

url <- "ftp://arthurhou.pps.eosdis.nasa.gov/gpmdata/2014/04/01/imerg/3B-HHR.MS.MRG.3IMERG.20140401-S150000-E152959.0900.V03D.HDF5"

output_file <- "3B-HHR.MS.MRG.3IMERG.20140401-S150000-E152959.0900.V03D.HDF5"

my_email <- "someone@example.com"

GET(url, authenticate(my_email, my_email), 
    write_disk(output_file))