Developing

Introduction

Esse post mostra como forçar o browser (navegador) a fazer o download de um arquivo (exibir a caixa de diálogo com a opção de baixar ou abrir).

Esse problema pode acontecer, por exemplo, com imagens (.gif, .jpg) ou até mesmo com .pdf ou .txt (arquivos de texto) já que o navegador tenta abrir o arquivo quando na verdade o usuário deveria baixar o mesmo ou então pelo browser abrir o arquivo o usuário pode não saber como salvar, por exemplo uma imagem ou um arquivo de texto.

Uma maneira de forçar o download de arquivos é por criar uma página que receberá o nome do arquivo a ser baixado e verificará qual sua extensão, para ver se existe a necessidade de forçar o download ou não.

This post shows how to force the browser to download a file (to display the dialog box with the option to download or open).

This problem can happen, for example with images (.gif, .jpg) or even. pdf or. txt (text files) as the browser tries to open the file when in fact the user should download the same or browser by opening the file the user may not know how to save, for example an image or text file.

One way to force the file download is for creating a page that will receive the name of the file to be downloaded and verify that its extension to see if there is a need to force the download or not.

Solution

O código abaixo mostra como criar essa funcionalidade em C# (ASP.NET), porém, pode ser facilmente transcrito para outras linguagens já que a ideia central é mesma como por exemplo em PHP ou ASP.

The code below shows how to create this functionality in C # (ASP.NET), but can easily be transcribed into other languages ​​as the central idea is the same as for example in PHP or ASP.

public void ForceDownload()
{
    void Page_Load(object sender, System.EventArgs e)
        {
                // Pega nome do arquivo na QueryString
                // Get file name from QueryString
                string file = Request.QueryString["file"].ToString();
                // Local onde o arquivo se encontra
                // Location where the file is
                string path = "D:\\Teste\\Uploads\\" + file;

                Response.Clear();
                Response.AddHeader("content-disposition", "attachment;filename=" + file.Replace(" ", "%20"));

                // Define um tipo de acordo com a extensão
                // Define a type according to the extension
                if (file.Contains(".pdf"))
                    Response.ContentType = "application/pdf";
                else if (file.Contains(".txt"))
                    Response.ContentType = "text/plain";
                else if (file.Contains(".mdb"))
                    Response.ContentType = "application/x-msaccess";
                else if (file.Contains(".gif"))
                    Response.ContentType = "image/gif";
                else if (file.Contains(".jpeg") ||
                         file.Contains(".jpg"))
                    Response.ContentType = "image/jpeg";
                else if (file.Contains(".ai"))
                    Response.ContentType = "application/postscript";
                else if (file.Contains(".crd"))
                    Response.ContentType = "application/cdr";

                Response.WriteFile(path);

                Response.End();
        }
}

Also View

ASP.NET – Menu Chrome Safari iPad

ASP.NET – Validation of viewstate MAC failed

ASP.NET – Firefox pedindo senha no IIS, IE e Chrome não

C# – Screenshot

C# – Change ProgressBar Color

C# – StringBuilder vs Concatenation

_____

Não se esqueça de deixar seu comentário, critica, elogio, dúvida e etc. Ele é muito importante para a melhoria do blog.
Do not forget to leave your comments, criticism, praise, questions, etc.. It is very important for improving the blog.

Advertisements

Comments on: "ASP.NET – Force Download" (2)

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: