我正试图在位于多个代理后面的远程服务器上下载一个R文件。每当我尝试在服务器上访问文件时,无论是通过R还是仅通过Web浏览器,都会有某种原因导致文件被缓存返回。
我已经尝试在download.file
调用中使用cacheOK=FALSE
,但没有效果。
Per是否有强制浏览器刷新/下载图像的方法?我试着在URL的末尾添加一个随机后缀:
download.file(url = paste("http://mba.tuck.dartmouth.edu/pages/faculty/ken.french/ftp/F-F_Research_Data_Factors_daily.zip?",
format(Sys.time(), "%d%m%Y"),sep=""),
destfile = "F-F_Research_Data_Factors_daily.zip", cacheOK=FALSE)
这会产生例如以下URL:
http://mba.tuck.dartmouth.edu/pages/faculty/ken.french/ftp/F-F_Research_Data_Factors_daily.zip?17092012
当从远程服务器上的Web浏览器访问时,确实会返回文件的最新版本。但是,当使用R中的download.file
进行访问时,会返回损坏的zip存档。WinRAR和R的unzip
函数都抱怨zip文件已损坏。
unzip("F-F_Research_Data_Factors_daily.zip")
1: In unzip("F-F_Research_Data_Factors_daily.zip") :
internal error in unz code
我不明白为什么通过R下载这个文件会导致返回损坏的文件,而通过Web浏览器下载则没有问题。
有人能提出一种击败R缓存的方法吗(我对此不抱希望),或者download.file
不喜欢我的URL的原因吗?有RandomString钉在它的末端吗?
如果使用mode="wb"
,它会起作用
download.file(url = paste("http://mba.tuck.dartmouth.edu/pages/faculty/ken.french/ftp/F-F_Research_Data_Factors_daily.zip?",format(Sys.time(),"%d%m%Y"),sep=""),
destfile = "F-F_Research_Data_Factors_daily.zip", mode='wb', cacheOK=FALSE)