隐藏最后一个 link 时下载保留原始文件名的文件
Download a file keeping original filename when final link is hidden
我需要下载一个文件,将其保存在一个文件夹中,同时保留网站上的原始文件名。
url <- "http://www.seg-social.es/prdi00/idcplg?IdcService=GET_FILE&dID=187112&dDocName=197533&allowInterrupt=1"
如果您在 Web 浏览器中单击 link,您将下载一个 excel 文件,文件名如下:
AfiliadosMuni-02-2015.xlsx
我知道我可以使用 R 中的命令 download.file 轻松下载它,如下所示:
download.file(url, "test.xlsx", method = "curl")
但我的脚本真正需要的是下载它并保持原始文件名不变。我也知道我可以像这样从我的控制台使用 curl 来做到这一点。
curl -O -J $"http://www.seg-social.es/prdi00/idcplg?IdcService=GET_FILE&dID=187112&dDocName=197533&allowInterrupt=1"
但是,我再次需要在 R 脚本中使用它。有没有一种类似于上面的方法但是在 R 中?我查看了 RCurl 包,但找不到解决方案。
你总是可以这样做:
library(httr)
library(stringr)
# alternate way to "download.file"
fil <- GET("http://www.seg-social.es/prdi00/idcplg?IdcService=GET_FILE&dID=187112&dDocName=197533&allowInterrupt=1",
write_disk("tmp.fil"))
# get what name the site suggests it shld be
fname <- str_match(headers(fil)$`content-disposition`, "\"(.*)\"")[2]
# rename
file.rename("tmp.fil", fname)
我认为 basename()
是最简单的选择 https://www.rdocumentation.org/packages/base/versions/3.4.3/topics/basename
例如
download.file(url, basename(url))
我需要下载一个文件,将其保存在一个文件夹中,同时保留网站上的原始文件名。
url <- "http://www.seg-social.es/prdi00/idcplg?IdcService=GET_FILE&dID=187112&dDocName=197533&allowInterrupt=1"
如果您在 Web 浏览器中单击 link,您将下载一个 excel 文件,文件名如下:
AfiliadosMuni-02-2015.xlsx
我知道我可以使用 R 中的命令 download.file 轻松下载它,如下所示:
download.file(url, "test.xlsx", method = "curl")
但我的脚本真正需要的是下载它并保持原始文件名不变。我也知道我可以像这样从我的控制台使用 curl 来做到这一点。
curl -O -J $"http://www.seg-social.es/prdi00/idcplg?IdcService=GET_FILE&dID=187112&dDocName=197533&allowInterrupt=1"
但是,我再次需要在 R 脚本中使用它。有没有一种类似于上面的方法但是在 R 中?我查看了 RCurl 包,但找不到解决方案。
你总是可以这样做:
library(httr)
library(stringr)
# alternate way to "download.file"
fil <- GET("http://www.seg-social.es/prdi00/idcplg?IdcService=GET_FILE&dID=187112&dDocName=197533&allowInterrupt=1",
write_disk("tmp.fil"))
# get what name the site suggests it shld be
fname <- str_match(headers(fil)$`content-disposition`, "\"(.*)\"")[2]
# rename
file.rename("tmp.fil", fname)
我认为 basename()
是最简单的选择 https://www.rdocumentation.org/packages/base/versions/3.4.3/topics/basename
例如
download.file(url, basename(url))