Can't download docx with R plumber API on Linux The Next CEO of Stack Overflowknitr:::pandoc skipping images from md -> docxShiny Download an excel fileHow can I change the temp folder where sqlite creates etilqs files on Ubuntu Linux R?Calling function name of a plumber APi endpointR plumber on Linux ServerDeploying plumber API via rsconnect (Handler not found)Oauth with Plumber API in RR Plumber deployment error in pm2Serve downloadable files with plumberMaking plumber API available over internet
If/When UK leaves the EU, can a future goverment conduct a referendum to join the EU?
Is "for causing autism in X" grammatical?
Help understanding this unsettling image of Titan, Epimetheus, and Saturn's rings?
How do we know the LHC results are robust?
Is there a difference between "Fahrstuhl" and "Aufzug"
Is it my responsibility to learn a new technology in my own time my employer wants to implement?
Why didn't Khan get resurrected in the Genesis Explosion?
How do I make a variable always equal to the result of some calculations?
Why is the US ranked as #45 in Press Freedom ratings, despite its extremely permissive free speech laws?
Has this building technique been used in an official set?
sp_blitzCache results Memory grants
Why don't programming languages automatically manage the synchronous/asynchronous problem?
Elegant way to replace substring in a regex with optional groups in Python?
Example of a Mathematician/Physicist whose Other Publications during their PhD eclipsed their PhD Thesis
Parametric curve length - calculus
Which tube will fit a -(700 x 25c) wheel?
Is it ever safe to open a suspicious html file (e.g. email attachment)?
Skipping indices in a product
How to solve a differential equation with a term to a power?
How fast would a person need to move to trick the eye?
How do I transpose the 1st and -1th levels of an arbitrarily nested array?
Would this house-rule that treats advantage as a +1 to the roll instead (and disadvantage as -1) and allows them to stack be balanced?
How to count occurrences of text in a file?
Complex fractions
Can't download docx with R plumber API on Linux
The Next CEO of Stack Overflowknitr:::pandoc skipping images from md -> docxShiny Download an excel fileHow can I change the temp folder where sqlite creates etilqs files on Ubuntu Linux R?Calling function name of a plumber APi endpointR plumber on Linux ServerDeploying plumber API via rsconnect (Handler not found)Oauth with Plumber API in RR Plumber deployment error in pm2Serve downloadable files with plumberMaking plumber API available over internet
I've produced a plumber API that looks like this:
#* @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)
Running locally it works fine on Windows, producing a docx file for download. It also seems to work okay if you run it locally on Linux and use Firefox, although it does seem to crash Firefox as it's trying to open or download the docx file.
But running locally on Linux and downloading via Chrome produces a binary file that is not recognised by the OS. If you select "Open with... Libre Office Writer" the file opens fine, but I really need my users to get a properly formatted file that will be opened automatically.
I can't figure out whether the problem is with the browser or the OS. Any help appreciated.
All the code is in this repository, as I say it all works fine in Windows so I actually put it up thinking it would be a useful reference for others, but now I can't get it to work on Linux- here
r plumber
add a comment |
I've produced a plumber API that looks like this:
#* @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)
Running locally it works fine on Windows, producing a docx file for download. It also seems to work okay if you run it locally on Linux and use Firefox, although it does seem to crash Firefox as it's trying to open or download the docx file.
But running locally on Linux and downloading via Chrome produces a binary file that is not recognised by the OS. If you select "Open with... Libre Office Writer" the file opens fine, but I really need my users to get a properly formatted file that will be opened automatically.
I can't figure out whether the problem is with the browser or the OS. Any help appreciated.
All the code is in this repository, as I say it all works fine in Windows so I actually put it up thinking it would be a useful reference for others, but now I can't get it to work on Linux- here
r plumber
1
This sounds like a browser problem. If the browser can't handle a file type, it won't be able to display it. In any case,docx
is a zip package that contains XML files. You can unzip the file to inspect it and see if it contains the same files in all OSs.
– Panagiotis Kanavos
Mar 21 at 17:26
1
You should probably force the browsers to download the file instead of trying to display it inline by setting theContent-Disposition
header toattachment
, eg withteam$setHeader("Content-Disposition", "attachment; filename=myFile.docx")
– Panagiotis Kanavos
Mar 21 at 17:27
Thanks, I'm not sure how to get that command working though. Will it work with Plumber? Is it from a package?
– Chris Beeley
Mar 21 at 21:19
1
It's the Plumber call that adds a header. Copied from the plumber tutorials
– Panagiotis Kanavos
Mar 22 at 8:07
You're a genius! I don't know why I never found that page yesterday, I looked for hours. Many thanks! I'm going to turn the correct code into an answer.
– Chris Beeley
Mar 22 at 8:36
add a comment |
I've produced a plumber API that looks like this:
#* @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)
Running locally it works fine on Windows, producing a docx file for download. It also seems to work okay if you run it locally on Linux and use Firefox, although it does seem to crash Firefox as it's trying to open or download the docx file.
But running locally on Linux and downloading via Chrome produces a binary file that is not recognised by the OS. If you select "Open with... Libre Office Writer" the file opens fine, but I really need my users to get a properly formatted file that will be opened automatically.
I can't figure out whether the problem is with the browser or the OS. Any help appreciated.
All the code is in this repository, as I say it all works fine in Windows so I actually put it up thinking it would be a useful reference for others, but now I can't get it to work on Linux- here
r plumber
I've produced a plumber API that looks like this:
#* @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)
Running locally it works fine on Windows, producing a docx file for download. It also seems to work okay if you run it locally on Linux and use Firefox, although it does seem to crash Firefox as it's trying to open or download the docx file.
But running locally on Linux and downloading via Chrome produces a binary file that is not recognised by the OS. If you select "Open with... Libre Office Writer" the file opens fine, but I really need my users to get a properly formatted file that will be opened automatically.
I can't figure out whether the problem is with the browser or the OS. Any help appreciated.
All the code is in this repository, as I say it all works fine in Windows so I actually put it up thinking it would be a useful reference for others, but now I can't get it to work on Linux- here
r plumber
r plumber
asked Mar 21 at 17:10
Chris BeeleyChris Beeley
258215
258215
1
This sounds like a browser problem. If the browser can't handle a file type, it won't be able to display it. In any case,docx
is a zip package that contains XML files. You can unzip the file to inspect it and see if it contains the same files in all OSs.
– Panagiotis Kanavos
Mar 21 at 17:26
1
You should probably force the browsers to download the file instead of trying to display it inline by setting theContent-Disposition
header toattachment
, eg withteam$setHeader("Content-Disposition", "attachment; filename=myFile.docx")
– Panagiotis Kanavos
Mar 21 at 17:27
Thanks, I'm not sure how to get that command working though. Will it work with Plumber? Is it from a package?
– Chris Beeley
Mar 21 at 21:19
1
It's the Plumber call that adds a header. Copied from the plumber tutorials
– Panagiotis Kanavos
Mar 22 at 8:07
You're a genius! I don't know why I never found that page yesterday, I looked for hours. Many thanks! I'm going to turn the correct code into an answer.
– Chris Beeley
Mar 22 at 8:36
add a comment |
1
This sounds like a browser problem. If the browser can't handle a file type, it won't be able to display it. In any case,docx
is a zip package that contains XML files. You can unzip the file to inspect it and see if it contains the same files in all OSs.
– Panagiotis Kanavos
Mar 21 at 17:26
1
You should probably force the browsers to download the file instead of trying to display it inline by setting theContent-Disposition
header toattachment
, eg withteam$setHeader("Content-Disposition", "attachment; filename=myFile.docx")
– Panagiotis Kanavos
Mar 21 at 17:27
Thanks, I'm not sure how to get that command working though. Will it work with Plumber? Is it from a package?
– Chris Beeley
Mar 21 at 21:19
1
It's the Plumber call that adds a header. Copied from the plumber tutorials
– Panagiotis Kanavos
Mar 22 at 8:07
You're a genius! I don't know why I never found that page yesterday, I looked for hours. Many thanks! I'm going to turn the correct code into an answer.
– Chris Beeley
Mar 22 at 8:36
1
1
This sounds like a browser problem. If the browser can't handle a file type, it won't be able to display it. In any case,
docx
is a zip package that contains XML files. You can unzip the file to inspect it and see if it contains the same files in all OSs.– Panagiotis Kanavos
Mar 21 at 17:26
This sounds like a browser problem. If the browser can't handle a file type, it won't be able to display it. In any case,
docx
is a zip package that contains XML files. You can unzip the file to inspect it and see if it contains the same files in all OSs.– Panagiotis Kanavos
Mar 21 at 17:26
1
1
You should probably force the browsers to download the file instead of trying to display it inline by setting the
Content-Disposition
header to attachment
, eg with team$setHeader("Content-Disposition", "attachment; filename=myFile.docx")
– Panagiotis Kanavos
Mar 21 at 17:27
You should probably force the browsers to download the file instead of trying to display it inline by setting the
Content-Disposition
header to attachment
, eg with team$setHeader("Content-Disposition", "attachment; filename=myFile.docx")
– Panagiotis Kanavos
Mar 21 at 17:27
Thanks, I'm not sure how to get that command working though. Will it work with Plumber? Is it from a package?
– Chris Beeley
Mar 21 at 21:19
Thanks, I'm not sure how to get that command working though. Will it work with Plumber? Is it from a package?
– Chris Beeley
Mar 21 at 21:19
1
1
It's the Plumber call that adds a header. Copied from the plumber tutorials
– Panagiotis Kanavos
Mar 22 at 8:07
It's the Plumber call that adds a header. Copied from the plumber tutorials
– Panagiotis Kanavos
Mar 22 at 8:07
You're a genius! I don't know why I never found that page yesterday, I looked for hours. Many thanks! I'm going to turn the correct code into an answer.
– Chris Beeley
Mar 22 at 8:36
You're a genius! I don't know why I never found that page yesterday, I looked for hours. Many thanks! I'm going to turn the correct code into an answer.
– Chris Beeley
Mar 22 at 8:36
add a comment |
1 Answer
1
active
oldest
votes
All thanks to Panagiotis, here's the code
#* @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)
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55285769%2fcant-download-docx-with-r-plumber-api-on-linux%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
All thanks to Panagiotis, here's the code
#* @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)
add a comment |
All thanks to Panagiotis, here's the code
#* @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)
add a comment |
All thanks to Panagiotis, here's the code
#* @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)
All thanks to Panagiotis, here's the code
#* @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)
answered Mar 22 at 8:37
Chris BeeleyChris Beeley
258215
258215
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55285769%2fcant-download-docx-with-r-plumber-api-on-linux%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
This sounds like a browser problem. If the browser can't handle a file type, it won't be able to display it. In any case,
docx
is a zip package that contains XML files. You can unzip the file to inspect it and see if it contains the same files in all OSs.– Panagiotis Kanavos
Mar 21 at 17:26
1
You should probably force the browsers to download the file instead of trying to display it inline by setting the
Content-Disposition
header toattachment
, eg withteam$setHeader("Content-Disposition", "attachment; filename=myFile.docx")
– Panagiotis Kanavos
Mar 21 at 17:27
Thanks, I'm not sure how to get that command working though. Will it work with Plumber? Is it from a package?
– Chris Beeley
Mar 21 at 21:19
1
It's the Plumber call that adds a header. Copied from the plumber tutorials
– Panagiotis Kanavos
Mar 22 at 8:07
You're a genius! I don't know why I never found that page yesterday, I looked for hours. Many thanks! I'm going to turn the correct code into an answer.
– Chris Beeley
Mar 22 at 8:36