下载隐藏最终链接时保留原始文件名的文件

时间:2015-03-12 18:53:36

标签: r curl download rcurl

我需要下载一个文件,将其保存在文件夹中,同时保留网站上的原始文件名。

url <- "http://www.seg-social.es/prdi00/idcplg?IdcService=GET_FILE&dID=187112&dDocName=197533&allowInterrupt=1"

在网络浏览器中,如果点击该链接,则可以下载带有此文件名的Excel文件:

  

AfiliadosMuni-02-2015.xlsx

我知道我可以使用R中的命令 download.file 轻松下载它,如下所示:

download.file(url, "test.xlsx", method = "curl")

但我真正需要的是我的脚本是下载它保持原始文件完好无损。我也知道我可以通过我的控制台卷曲这样做。

curl -O -J $"http://www.seg-social.es/prdi00/idcplg?IdcService=GET_FILE&dID=187112&dDocName=197533&allowInterrupt=1"

但是,我再次在R脚本中需要这个。有没有类似于上面的方法,但在R?我查看了 RCurl 包,但我找不到解决方案。

2 个答案:

答案 0 :(得分:9)

您可以随时执行以下操作:

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)

答案 1 :(得分:0)

我认为let arr = [{'a': 1,'b': 10,'aa': { 'a': 11, 'ab': {'a': 'mark was here'} }}, {'a': 2,'b': 20,'aa': { 'a': 22, 'ab': 220 }}, {'a': 3,'b': 30,'aa': { 'a': 33, 'ab': 330 }}] let key = 'a' let ret = arr.reduce(function getall(a, c){ Object.entries(c).forEach(([k,v]) => { if (k === key) a.push({[k]: v}) else if (typeof v === 'object') getall(a, v) }) return a }, []) console.log(ret)是最简单的选项https://www.rdocumentation.org/packages/base/versions/3.4.3/topics/basename

e.g。

basename()