Na produção de sites, muitas vezes é necessário desenvolver a função de download de arquivos. Existem três maneiras de baixar arquivos:
1. Código de download ASP
<%
nome do arquivo = Request.QueryString("Nome do arquivo")
se nome do arquivo = "" então
Response.Write "Por favor, insira o parâmetro filename e especifique o nome do arquivo baixado"
outro
Response.ContentType = "aplicativo/fluxo de octetos"
Response.AddHeader "disposição de conteúdo", "anexo; nome do arquivo =" & nome do arquivo
Definir FileStream = Server.CreateObject("Adodb.Stream")
FileStream.Mode = 3
FileStream.Type = 1
FileStream.Open
FileStream.LoadFromFile(Server.MapPath(nome do arquivo))
Response.BinaryWrite(FileStream.Read)
FileStream.Close()
Definir FileStream = nada
terminar se
%>Salve o código acima em um arquivo do tipo asp e use-o como: download.asp?filename=a.gif.
2. Use o WebClient
Adicione o seguinte código ao evento do botão de download
System.Net.WebClient wc = new System.Net.WebClient();
wc.DownloadFile( " O código acima fará o download do arquivo a.gif do lado do servidor para a unidade c do cliente sem nenhum aviso. É bastante assustador sem nenhum aviso, mas às vezes é necessário fazer isso. Este código também pode ser usado Execute o programa na área de trabalho.
3. Código de download ASP NET com prompts de download
//Abre o arquivo para baixar
System.IO.FileStream r = novo System.IO.FileStream(FileName, System.IO.FileMode.Open);
//Definir informações básicas
Resposta.Buffer = falso;
Response.AddHeader("Conexão", "Keep-Alive");
Response.ContentType = "aplicativo/fluxo de octetos";
Response.AddHeader("Disposição de conteúdo", "anexo;nome do arquivo=" + System.IO.Path.GetFileName(NomedoArquivo));
Response.AddHeader("Comprimento do conteúdo", r.Length.ToString());
enquanto (verdadeiro)
{
//Abre espaço de buffer
byte[] buffer = novo byte[1024];
//Lê os dados do arquivo
comprimento interno = r.Read(buffer, 0, 1024);
if (leng == 0) // Até o final do arquivo, fim
quebrar;
if (leng == 1024) // O comprimento dos dados do arquivo lido é igual ao comprimento do buffer e os dados do buffer são gravados diretamente
Response.BinaryWrite(buffer);
outro
{
//Os dados do arquivo de leitura são menores que o buffer, redefine o tamanho do buffer, usado apenas para ler o último bloco de dados do arquivo
byte[] b = novo byte[comprimento];
for (int i = 0; i < comprimento; i++)
b[i] = buffer[i];
Response.BinaryWrite(b);
}
}
r.Close();//Fecha o arquivo baixado
Response.End(); //Finalizar download do arquivo. Este método possui uma caixa de prompt de download, para que o servidor possa saber quando o download for concluído.