Entrar com a conta da Microsoft
Entrar ou criar uma conta.
Olá,
Selecionar uma conta diferente.
Você tem várias contas
Escolha a conta com a qual você deseja entrar.

INTRODUÇÃO

Este artigo descreve um exemplo de estrutura de All-In-One que está disponível para download. Este exemplo de código demonstra como carregar e baixar arquivos de um servidor local ou remoto em ASP.NET. Você pode baixar os pacotes de amostra dos seguintes ícones de download. C# e Visual Basic .NET versões de idioma do pacote de exemplo estão disponíveis.


Este exemplo de código demonstra como carregar e baixar arquivos de um servidor que não está no escopo do domínio de solicitação do usuário. Funcionalidade é fornecida para transferir arquivos com protocolos FTP e HTTP. Além disso, este exemplo de código usa Uniform Resource Identifiers (URIs) para identificar os locais dos arquivos em um servidor. As classes principais usadas neste exemplo de código são a classe WebClient e a classe WebRequest .

Nível de dificuldade




alternate text

Informações sobre o download:

Para baixar este exemplo de código, clique em um dos links a seguir:

Visão geral técnica

É bem fácil de carregar e baixar arquivos de um servidor remoto no ASP.NET. A biblioteca de classes do.NET Framework oferece alguns objetos de solicitação leve. A classe WebClient é uma classe de alto nível que facilita as interações do servidor. WebRequest objetos são usados pela classe WebClient para fazer solicitações. As classes HttpWebRequest e FtpWebRequest são implementações específicas de protocolo de WebRequest classe abstrata. HttpWebRequest implementa os métodos GET e POST do protocolo HTTP para fazer upload e download de arquivos. FtpWebRequest implementa os métodos STOR e RETR do protocolo FTP para carregar e baixar arquivos.


Este exemplo de código usa os métodos UploadData e DownloadData da classe WebClient para transferir dados para e de um URI do servidor remoto. O método UploadData é usado com o método PUT do protocolo HTTP e o "application/x-www-form-urlencoded" Internet tipo de mídia. O método DownloadData é usado com um objeto FileStream para armazenar o fluxo de dados recebidos e gravar a matriz de bytes em um arquivo local.

Visão geral de exemplo

Este código de exemplo, você encontrará o arquivo RemoteFileForm.aspx que explica como usar as seguintes classes novas:

  • RemoteUpload

  • RemoteDownload

A classe RemoteUpload

A classe RemoteUpload tem duas classes filhas. Essas classes são HttpRemoteUpload e FtpRemoteUpload. Ambas as classes usam o construtor de RemoteUpload . A classe RemoteUpload requer uma matriz de bytes de dados do arquivo e um URI do servidor. Você também pode especificar o nome para o arquivo carregado. A classe FtpRemoteUpload usa FtpWebRequest diretamente (em vez de usar a classe WebClient alto nível) para lidar com os requisitos específicos do protocolo FTP.


Consulte as seguintes definições de classe para obter mais informações sobre a classe RemoteUpload :
public class HttpRemoteUpload : RemoteUpload
{
public HttpRemoteUpload(byte[] fileData, string fileNamePath, string urlString)
: base(fileData, fileNamePath, urlString)
{

}

public override bool UploadFile()
{
byte[] postData;
try
{
postData = this.FileData;
using (WebClient client = new WebClient())
{
client.Credentials = CredentialCache.DefaultCredentials;
client.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
client.UploadData(this.UrlString, "PUT", postData);
}

return true;
}
catch (Exception ex)
{
throw new Exception("Failed to upload", ex.InnerException);
}

}
}

public class FtpRemoteUpload : RemoteUpload
{
public FtpRemoteUpload(byte[] fileData, string fileNamePath, string urlString)
: base(fileData, fileNamePath, urlString)
{

}

public override bool UploadFile()
{
FtpWebRequest reqFTP;
reqFTP = (FtpWebRequest)FtpWebRequest.Create(this.UrlString);
reqFTP.KeepAlive = true;
reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
reqFTP.UseBinary = true;
reqFTP.ContentLength = this.FileData.Length;

int buffLength = 2048;
byte[] buff = new byte[buffLength];
MemoryStream ms = new MemoryStream(this.FileData);

try
{
int contenctLength;
using (Stream strm = reqFTP.GetRequestStream())
{
contenctLength = ms.Read(buff, 0, buffLength);
while (contenctLength > 0)
{
strm.Write(buff, 0, contenctLength);
contenctLength = ms.Read(buff, 0, buffLength);
}
}

return true;
}
catch (Exception ex)
{
throw new Exception("Failed to upload", ex.InnerException);
}
}

} No arquivo RemoteFileForm.cs, quando você clicar no botão carregar , é criada uma instância do objeto RemoteUpload . Passar o URI do servidor e um caminho de arquivo local físico como parâmetros para criar o objeto.


Observação: Se você não especificar um nome de arquivo a ser usado para armazenar o arquivo no servidor, o sistema irá gerar automaticamente um nome de arquivo de acordo com a data e hora atuais no servidor. A data e a hora tem precisão de milissegundos. Depois que o método UploadData terminar, o resultado é mostrado na página atual.

A classe RemoteDownload

A classe RemoteDownload também tem duas classes filhas. Essas classes são HttpRemoteDownload e FtpRemoteDownload. A classe RemoteDownload requer um URI e um diretório físico local. A classe RemoteDownload verifica certificar-se de que o recurso do URI existe antes do download é iniciado. A classe recupera o fluxo que contém os dados de resposta do servidor e grava a matriz de bytes em um FileStream. A classe FtpRemoteDownload usa FtpWebRequest diretamente (em vez de usar a classe WebClient alto nível) para lidar com os requisitos específicos do protocolo FTP.


Consulte as seguintes definições de classe para obter mais informações sobre a classe RemoteDownload :
public class HttpRemoteDownload : RemoteDownload
{
public HttpRemoteDownload(string urlString, string descFilePath)
: base(urlString, descFilePath)
{

}

public override bool DownloadFile()
{
string fileName = System.IO.Path.GetFileName(this.UrlString);
string descFilePathAndName =
System.IO.Path.Combine(this.DescFilePath, fileName);
try
{
WebRequest myre = WebRequest.Create(this.UrlString);
}
catch
{
return false;
}
try
{
byte[] fileData;
using (WebClient client = new WebClient())
{
fileData = client.DownloadData(this.UrlString);
}
using (FileStream fs =
new FileStream(descFilePathAndName, FileMode.OpenOrCreate))
{
fs.Write(fileData, 0, fileData.Length);
}
return true;
}
catch (Exception ex)
{
throw new Exception("download field", ex.InnerException);
}
}
}

public class FtpRemoteDownload : RemoteDownload
{
public FtpRemoteDownload(string urlString, string descFilePath)
: base(urlString, descFilePath)
{

}

public override bool DownloadFile()
{
FtpWebRequest reqFTP;

string fileName = System.IO.Path.GetFileName(this.UrlString);
string descFilePathAndName =
System.IO.Path.Combine(this.DescFilePath, fileName);

try
{

reqFTP = (FtpWebRequest)FtpWebRequest.Create(this.UrlString);
reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;
reqFTP.UseBinary = true;


using (FileStream outputStream = new FileStream(descFilePathAndName, FileMode.OpenOrCreate))
using (FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse())
using (Stream ftpStream = response.GetResponseStream())
{
int bufferSize = 2048;
int readCount;
byte[] buffer = new byte[bufferSize];
readCount = ftpStream.Read(buffer, 0, bufferSize);
while (readCount > 0)
{
outputStream.Write(buffer, 0, readCount);
readCount = ftpStream.Read(buffer, 0, bufferSize);
}
}
return true;
}

catch (Exception ex)
{
throw new Exception("upload failed", ex.InnerException);
}
}
}
Observação: Para obter mais informações sobre como criar e implantar o aplicativo de exemplo, consulte o arquivo readme. txt incluído no pacote de download.


Idiomas

Este código de exemplo está disponível nos seguintes idiomas de programação:

Idioma

Nome do projeto

O Visual C#

CSRemoteUploadAndDownload

Visual Basic.NET

VRemoteUploadAndDownload

Categoria de tecnologia

  • ASP.NET 2.0

  • ASP.NET 3.5

  • ASP.NET 4.0

Referências

Para obter mais informações sobre a classe WebClient , visite o seguinte site da MSDN (Microsoft Developer):

Informações gerais sobre a classe WebClientPara obter mais informações sobre o método UploadData , visite o seguinte site da MSDN:

Informações gerais sobre o método UploadDataPara obter mais informações sobre o método DonwloadData , visite o seguinte site da MSDN:

Informações gerais sobre o método DonwloadDataPara obter mais informações sobre o método FtpWebRequest , visite o seguinte site da MSDN:

Informações gerais sobre o método FtpWebRequestPara obter mais informações sobre como carregar arquivos usando FTP, visite o seguinte site da MSDN:

Como carregar arquivos usando FTP

Mais informações

O que é a estrutura de código All-In-One?

All-In-One código Framework mostra a maioria das técnicas de desenvolvimento Microsoft por meio de exemplos de código em linguagens de programação diferentes. Cada exemplo cuidadosamente é selecionado, composto e documentado para mostrar um cenário comum de código. Para obter mais informações sobre o All-In-One código Framework, visite o seguinte site da Microsoft:

http://1code.codeplex.com

Como encontrar mais amostras de código Framework All-In-One

Para obter mais exemplos de código Framework All-In-One, procure por "kbcodefx" com palavras-chave relacionadas no Microsoft site de suporte. Ou visite o seguinte site da Microsoft:

Amostras de código Framework All-In-One

Isenção de responsabilidade de publicação rápida

Microsoft corporation e/ou em seus respectivos fornecedores tornam não oferece representações sobre a adequação, confiabilidade ou precisão das informações e gráficos relacionados aqui contidos. Todas essas informações e gráficos relacionados são fornecidos "como estão" sem garantia de nenhum tipo. Microsoft e/ou seus respectivos fornecedores se ISENTAM de todas as garantias e condições relativas a essas informações por meio deste instrumento e relacionadas a elementos gráficos, incluindo todas as garantias implícitas e condições de COMERCIABILIDADE, adequação a uma finalidade específica, mão esforço, título e não-violação. Você especificamente concorda que em nenhuma hipótese Microsoft e/ou seus fornecedores serão responsáveis por quaisquer danos diretos, indiretos, PUNITIVOS, INCIDENTAIS, danos especiais, CONSEQUENTES ou quaisquer danos, incluindo, sem limitação, danos por perda de uso, dados ou lucros, decorrentes ou de alguma forma associadas do uso ou da incapacidade de usar as informações e gráficos relacionados contidos aqui, com base em contrato, AGRAVO, negligência, responsabilidade estrita ou outra forma, mesmo que a Microsoft ou qualquer um de seus fornecedores foi avisada da possibilidade de ocorrência de danos.

Precisa de mais ajuda?

Quer mais opções

Explore os benefícios da assinatura, procure cursos de treinamento, saiba como proteger seu dispositivo e muito mais.

As comunidades ajudam você a fazer e responder perguntas, fazer comentários e ouvir especialistas com conhecimento avançado.

Essas informações foram úteis?

Qual é o seu grau de satisfação com a qualidade do idioma?
O que afetou sua experiência?
Ao pressionar enviar, seus comentários serão usados para aprimorar os produtos e serviços da Microsoft. Seu administrador de TI poderá coletar esses dados. Política de Privacidade.

Agradecemos seus comentários!

×