Не могу скачать docx с R plumber API в Linux - PullRequest
0 голосов
/ 21 марта 2019

Я создал API-интерфейс для сантехника, который выглядит следующим образом:

#* @serializer contentType list(type="application/vnd.openxmlformats-officedocument.wordprocessingml.document")
#* @get /word
function(team){
  tmp <- tempfile()

  render("test.Rmd", tmp, output_format = "word_document",
         params = list(team = team))

  readBin(tmp, "raw", n=file.info(tmp)$size)
}

Локально работает в Windows и работает нормально, создавая файл docx для загрузки.Кажется, что это также работает нормально, если вы запускаете его локально в Linux и используете Firefox, хотя, похоже, он приводит к сбою Firefox, когда он пытается открыть или загрузить файл docx.

Но работает локально в Linux и загружает через Chromeсоздает двоичный файл, который не распознается ОС.Если вы выберете «Открыть с помощью ... Libre Office Writer», файл откроется нормально, но мне очень нужны мои пользователи, чтобы получить правильно отформатированный файл, который будет открыт автоматически.

Я не могу понять,проблема с браузером или ОС.Любая помощь приветствуется.

Весь код находится в этом репозитории, поскольку я говорю, что все это прекрасно работает в Windows, поэтому я на самом деле поднял его, думая, что это будет полезным справочным материалом для других, но теперь я не могу получитьэто работает на Linux- здесь

1 Ответ

0 голосов
/ 22 марта 2019

Все благодаря Panagiotis, вот код

#* @serializer contentType list(type="application/octet-stream")
#* @get /word
function(team, res){

  res$setHeader("Content-Disposition", "attachment; filename=report.docx")

  tmp <- tempfile()

  render("test.Rmd", tmp, output_format = "word_document",
         params = list(team = team))

  readBin(tmp, "raw", n=file.info(tmp)$size)
}
...