Prompt user to download PDF file instead of opening

后端 未结 6 2062
庸人自扰
庸人自扰 2021-01-05 07:14

In my project site, if I click on a link, the PDF opens in a new or parent window. Well I want a box to appear that prompts the user to download the file instead of opening

相关标签:
6条回答
  • 2021-01-05 07:39

    Since your edit states that you're using PHP, here's how to do the same in PHP:

    <?php
    header('Content-type: application/pdf');
    header('Content-Disposition: attachment; filename="downloaded.pdf"');
    readfile('original.pdf');
    ?>
    
    0 讨论(0)
  • 2021-01-05 07:39

    Change the Content-Type to application/octet-stream. You may find however, that some browsers will infer from the file extension that it should open as a PDF with your favorite PDF viewer.

    Response.ContentType = "application/octet-stream";
    

    Also, set the following:

    Response.AppendHeader( "content-disposition", "attachment; filename=" + name );
    
    0 讨论(0)
  • 2021-01-05 07:40

    If you are getting a corrupted file error try this:

    header('Pragma: public');
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Cache-Control: private', false);
    header('Content-Type: application/pdf');
    header('Content-disposition: attachment; filename=' . basename($file));
    header("Content-Transfer-Encoding:  binary");
    header('Content-Length: ' . filesize($file)); // provide file size
    header('Connection: close');
    readfile($file);
    

    Where $file is the full path or url of the file.

    0 讨论(0)
  • 2021-01-05 07:41

    You can't do it via javascript, you need server side implementation.

    Here's the SO Post which should help:
    Allowing user to download from my site through Response.WriteFile()

    0 讨论(0)
  • 2021-01-05 07:44

    http://aspalliance.com/259_Downloading_Files__Forcing_the_File_Download_Dialog

    0 讨论(0)
  • 2021-01-05 07:45

    Since you've tagged it .NET, I'd say this is your best solution:

    Response.ClearContent();
    Response.ClearHeaders();
    Response.ContentType = "application/pdf";
    Response.AddHeader("Content-Disposition", "attachment;filename=download.pdf");
    Response.WriteFile(Server.MapPath("~/files/myFile.pdf"));
    Response.Flush();
    Response.Close();
    
    0 讨论(0)
提交回复
热议问题