Прервать загрузку файла в R, если файл становится слишком большим

В блестящем приложении я хотел бы, чтобы пользователи могли загружать удаленный (.nc) файл с ограничением размера файла, скажем, 100 МБ.

Для некоторых файлов проверка заголовка работает хорошо, как предлагается здесь https://stackoverflow.com/a/20921907/6424231, например.

httr::headers(httr::HEAD("https://www.unidata.ucar.edu/software/netcdf/examples/ECMWF_ERA-40_subset.nc"))[["Content-Length"]]
#> [1] "22165040"

Но для файлов .nc на серверах THREDDS свойство Content-Length недоступно, например.

httr::headers(httr::HEAD("https://dapds00.nci.org.au/thredds/ncss/uc0/Test_pixel_count.nc?var=Band1&north=-22.9556&west=142&east=143&south=-25.0706&disableProjSubset=on&horizStride=1"))[["Content-Length"]]
#> NULL

Поэтому я понятия не имею о размере этого файла перед загрузкой.

Есть ли способ разрешить запуск download.file(), но затем прервать загрузку, если она достигает 100 МБ, а загрузка не завершена? Я знаю, что в httr также доступны параметры времени ожидания, но в идеале я хотел бы, чтобы ограничение основывалось на размере файла, поскольку я не хочу, чтобы пользователи с медленным соединением не могли загружать относительно небольшие файлы.

Возможно ли это в R или есть ли другие способы добиться этого, чтобы пользователи не загружали произвольно большие файлы?


person Danny    schedule 23.07.2021    source источник
comment
Я бы посоветовал вам загрузить файлы с помощью httr::GET(..., httr::write_disk()) и проверить, есть ли там способы настроить ограничения на загрузку. curl::curl_options("maxfilesize") выглядит многообещающе. Он должен быть совместим с httr::config()   -  person Gregor de Cillia    schedule 23.07.2021
comment
Спасибо, я посмотрю на это. Будет ли httr::GET также работать в Windows без необходимости устанавливать пользователям дополнительные вещи (помимо других пакетов R)? Я знаю, что это как-то зависит от Curl.   -  person Danny    schedule 25.07.2021