Почему `download.file ()` загружает поврежденный файл с работающей ссылки Dropbox c? - PullRequest
0 голосов
/ 09 января 2020

Edit: Итак, мне удалось заставить что-то еще работать (включено ниже). Но я все еще хотел бы понять, почему моя первая попытка оказалась неудачной.

Это я пытаюсь использовать download.file для загрузки моего общедоступного файла Dropbox:

library("readxl")

# Define public download link location ------------------------------------------
excelUrl = "https://www.dropbox.com/s/v9lm9y7nso8yw1x/dashboardTotals.xlsx?dl=1"
     # I've experimented with appending '&raw=1' to this, doesn't seem to do anything.

# Function for downloading .xlsx into current wd --------------------------------
read_url_excel <- function(url,saveas = paste0(getwd(),"/newExcelFile.xlsx")){
  download.file(url, destfile = saveas)
  url_excel <- readxl::read_excel(saveas)
  return(url_excel)
}

# This doesn't work, because the file is corrupted and can't be read by read_excel()
excelTable = read_url_excel(excelUrl)
#> Error: Evaluation error: error reading from the connection.

Создано в 2020-01-09 с помощью пакета prex (v0.3.0)

Вы, вероятно, можете сказать, что я не совсем уверен, как соединения / файлы работают в R. Мне удалось заставить это работать вместо этого:

excelUrl = "https://www.dropbox.com/s/v9lm9y7nso8yw1x/dashboardTotals.xlsx?dl=1&raw=1"

tmpF <- paste0(getwd(),"/newTing.xlsx")
theFile <- url(excelUrl, open="rb")

binary = readBin(theFile,raw(),100000)

writeBin(binary,tmpF)

Создано в 2020-01-09 пакетом представ (v0.3.0)

Почему метод 1 завершается неудачно, а метод 2 - успешным?

...