Я хотел бы создать zip-архив (содержащий несколько файлов xlsx) и сохранить его локально. Файлы хранятся в папке на стороне сервера.
Пользователь выбирает файлы для архивации с помощью checkboxInput.
Вот код для флажка:
get.files <- reactive({
list.files("output_file/")
})
obsList <- list()
output$links_list <- renderUI({
lapply(as.list(1:length(get.files())), function(i)
{
btName <- get.files()[i]
# creates an observer only if it doesn't already exists
if (is.null(obsList[[btName]])) {
obsList[[btName]] <<- btName
}
fluidRow(checkboxInput(btName, get.files()[i]) )
})
})
Флажки создаются динамически, читая содержимое в папке («output_file /»). Рядом с каждым флажком находится название файла.
Функция для скачивания:
output$downloadzip<-downloadHandler(
filename = function(){
paste0("Extract.zip")
},
content = function(file){
files <- NULL;
for (i in 1:length(obsList)){
if(input[[obsList[[i]]]])
files <- c(paste("output_file/",obsList[[i]],sep=""),files)
}
#create the zip file
zip(file,files)
},
contentType = "application/zip"
)
Функция создает массив имен файлов (файлов), используя только имена файлов, которые были проверены.
Я также создал функцию, которая позволяет мне проверять, выбраны ли только нужные файлы:
tempText <- eventReactive({input$TempTest},{
l<-c()
for (i in 1:length(obsList)){
if(input[[obsList[[i]]]])
l<-c(l,paste("output_file/",obsList[[i]],sep=""))
}
return(paste(l) )
},
ignoreInit = TRUE)
output$Temp <- renderPrint({ tempText()})
Эта функция корректно отображает строки с именами файлов.
Ошибка, которую я получаю при попытке загрузить zip-файл:
sh:: команда не найдена
Может кто-нибудь помочь мне это исправить?