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










0















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










share|improve this question

















  • 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 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






  • 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















0















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










share|improve this question

















  • 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 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






  • 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













0












0








0








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










share|improve this question














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






share|improve this question













share|improve this question











share|improve this question




share|improve this question










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 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






  • 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





    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 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






  • 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












1 Answer
1






active

oldest

votes


















0














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)






share|improve this answer























    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
    );



    );













    draft saved

    draft discarded


















    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









    0














    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)






    share|improve this answer



























      0














      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)






      share|improve this answer

























        0












        0








        0







        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)






        share|improve this answer













        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)







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Mar 22 at 8:37









        Chris BeeleyChris Beeley

        258215




        258215





























            draft saved

            draft discarded
















































            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.




            draft saved


            draft discarded














            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





















































            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







            Popular posts from this blog

            Kamusi Yaliyomo Aina za kamusi | Muundo wa kamusi | Faida za kamusi | Dhima ya picha katika kamusi | Marejeo | Tazama pia | Viungo vya nje | UrambazajiKuhusu kamusiGo-SwahiliWiki-KamusiKamusi ya Kiswahili na Kiingerezakuihariri na kuongeza habari

            Swift 4 - func physicsWorld not invoked on collision? The Next CEO of Stack OverflowHow to call Objective-C code from Swift#ifdef replacement in the Swift language@selector() in Swift?#pragma mark in Swift?Swift for loop: for index, element in array?dispatch_after - GCD in Swift?Swift Beta performance: sorting arraysSplit a String into an array in Swift?The use of Swift 3 @objc inference in Swift 4 mode is deprecated?How to optimize UITableViewCell, because my UITableView lags

            Access current req object everywhere in Node.js ExpressWhy are global variables considered bad practice? (node.js)Using req & res across functionsHow do I get the path to the current script with Node.js?What is Node.js' Connect, Express and “middleware”?Node.js w/ express error handling in callbackHow to access the GET parameters after “?” in Express?Modify Node.js req object parametersAccess “app” variable inside of ExpressJS/ConnectJS middleware?Node.js Express app - request objectAngular Http Module considered middleware?Session variables in ExpressJSAdd properties to the req object in expressjs with Typescript