It is sometimes useful to upload a large dataset to Zenodo. For example, if you are wanting to register a derived dataset.
I have found that large datasets tend not to be handled well by the Zenodo UI. In these cases, uploading via the Zenodo API tends to work better.
I wrote a script below in R that will upload a dataset to a started/unpublished Zenodo deposit.
This script requires a personal access token, which you can get here.
# zenodo large file upload library(httr) library(dplyr) library(purrr) # get your token here # https://zenodo.org/account/settings/applications/ token <- "long_ugly_number_you_get_from_zenodo" deposit_id <- 6137047 # fill in UI form to get this number file <- "file_you_want_to_upload.zip" bucket <- GET(paste0("https://www.zenodo.org/api/deposit/depositions/",deposit_id), add_headers(Authorization = paste("Bearer", token)), encode = 'json' ) %>% content(as = "text") %>% jsonlite::fromJSON() %>% pluck("links") %>% pluck("bucket") %>% gsub("https://zenodo.org/api/files/","",.) PUT(url = paste0("https://www.zenodo.org/api/files/",bucket,"/",file,"?access_token=",token), body = upload_file(file) # path to your local file ) %>% content(as = "text")
This script was inspired by