如何使用R从Dropbox下载任意形式的文件

11

我尝试了

download.file('https://www.dropbox.com/s/r3asyvybozbizrm/Himalayas.jpg',
              destfile="1.jpg",
              method="auto")

但它返回该页面的HTML源代码。同时也尝试了一些rdrop。
library(rdrop2)
# please put in your key/secret
drop_auth(new_usesr = FALSE, key=key, secret=secret, cache=T)

弹出的网站报告如下:

Invalid redirect_uri: "http://localhost:1410": It must exactly match one of the redirect URIs you've pre-configured for your app (including the path).

我不是很理解URI的概念。请问有没有相关的文档可以推荐一下呢?我看了一些帖子,但大多数都是关于如何从Excel文件中读取数据的。repmis仅适用于读取Excel文件...
library(repmis)
repmis::source_DropboxData("test.csv",
                           "tcppj30pkluf5ko",
                           sep = ",",
                           header = F)

也尝试过

library(RCurl)
url='https://www.dropbox.com/s/tcppj30pkluf5ko/test.csv'
x = getURL(url)
read.csv(textConnection(x))

它没有起作用...

感谢任何帮助和讨论。谢谢!


嗨,谢谢@Pascal!实际上我尝试了一下 - 不理解URI...请看更新的OP。 - YJZ
2个回答

15
第一个问题是由于https://www.dropbox.com/s/r3asyvybozbizrm/Himalayas.jpg链接指向预览页面,而不是文件内容本身,这就是为什么你会得到HTML的原因。你可以像这样修改链接,以指向文件内容。

https://www.dropbox.com/help/201

例如,添加一个 raw=1 的 URL 参数:

https://www.dropbox.com/s/r3asyvybozbizrm/Himalayas.jpg?raw=1

你的下载器需要遵循重定向才能正常工作。
第二个问题是因为你正在尝试使用OAuth 2应用程序授权流程,这要求所有重定向URI都必须预先注册。你可以在App Console上的应用程序页面上注册重定向URI,对于你的情况,它是http://localhost:1410,适用于Dropbox API应用程序。

https://www.dropbox.com/developers/apps

如果您想了解如何使用OAuth,请参考Dropbox API OAuth指南,链接在此处:

https://www.dropbox.com/developers/reference/oauthguide


非常感谢@Greg!我使用了"?raw=1",下载成功了。R显示Content type 'image/jpeg' length 67704 bytes (66 KB) downloaded 66 KB67704是该图片的正确大小。但是下载的图片属性显示为67,910字节,我无法打开它...有任何想法为什么会这样吗?谢谢! - YJZ
当我尝试通过浏览器下载链接的原始版本时,它生成一个大小为67,704字节的文件,我可以成功打开。你的下载代码是否因某种原因而改变了它?你是否尝试过对比这两个版本以查看差异? - Greg
嗨@Greg,感谢您的帮助。我也可以通过浏览器下载它,但在Rstudio中无法使其工作。您所说的两个版本是什么?我使用了download.file('https://www.dropbox.com/s/r3asyvybozbizrm/Himalayas.jpg?raw=1', destfile="1.jpg", method="auto")。 Rstudio显示“内容类型'image / jpeg'长度67704字节(66 KB)”,但右键单击文件->属性显示“67,910字节”,我无法打开图片。请告诉我。谢谢~ - YJZ
我指的是有效的 67,704 字节版本,例如从您的浏览器中获取的版本,以及无效的 67,910 字节版本,这是您通过 Rstudio 获取的版本。 - Greg
谢谢@Greg!你知道如何手动检查吗?我在notepad++中打开了两个文件,它们显示出奇怪的字符。我将它们转换为base64编码,现在它们都是字母、数字和/。我注意到两个文件的开头是相同的,而结尾是不同的。我应该手动找到应该从坏文件的末尾删除哪个部分吗?请告诉我或推荐一些相关阅读材料。非常感谢。 - YJZ
显示剩余2条评论

0

1
你的回答不是很清晰,也许你应该进行编辑以更加明确。 - olibiaz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接