R语言从URL下载.tif影像仅得到损坏小文件的问题排查
问题根因分析
- 你下载得到的100KB文件并非栅格影像,从返回的
Content type 'text/html; charset=UTF-8'可以判断,实际下载的是网页内容,大概率是谷歌云存储的身份验证跳转页或访问提示页。你当前使用的storage.cloud.google.com是谷歌云存储的Web管理端访问域名,公共对象直连需要更换为storage.googleapis.com域名。
修复方案
方案1:修改URL后使用原生下载函数
更换URL前缀,同时显式指定下载方法避免默认方法兼容性问题:
url <- "https://storage.googleapis.com/mapbiomas-public/COLECAO/5/DOWNLOADS/COLECOES/ANUAL/PAMPA/PAMPA-1985.tif" file <- basename(url) # 可根据你的系统替换method参数为"wget"/"libcurl" download.file(url, file, mode = "wb", method = "curl")
方案2:使用httr包发送带请求头的下载请求
避免反爬限制,稳定性更高:
library(httr) url <- "https://storage.googleapis.com/mapbiomas-public/COLECAO/5/DOWNLOADS/COLECOES/ANUAL/PAMPA/PAMPA-1985.tif" file <- basename(url) GET(url, write_disk(file, overwrite = TRUE), user_agent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"))
验证方法
下载完成后可读取文件属性确认格式正确:
file.size(file) # 正常返回约30MB的对应字节数
内容的提问来源于stack exchange,提问作者catatau
相关产品推荐
相关产品推荐

