Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

André Mailho

Configurar FTP para download de arquivos, em C#

Recommended Posts

Fala ai galera, to com um novo problema! Dessa vez eu preciso configurar um ftpclient para download! E a coisa é mais complicada do que eu pensava, nao sei nem ao certo por onde começar. Mas eu vou tentar explicar xD.

 

Atraves de um search eu vou listar alguns arquivos em uma gridView (por exemplo, todos os arquivos de uma empresa selecionada), feito isso eu poderei escolher um arquivo (geralmente txt) para download. Eu achei alguns códigos para fazer o download, mas todos requerem que eu use uma nova classe! como por exemplo neste site:

 

http://www.codeproject.com/KB/IP/ftplib.aspx

 

me aparece um erro dizendo que a namespace nao foi encontrada! por que eu nao estou usando a classe criada por eles! Nao existe um meio mais pratico? Alguem poderia me mostrar como fazer essas tres etapas?

 

1º ---- Search do arquivo

2º ---- Exibi-los no gridiView (preciso exibir no gridView os dados basicos do arquivo, como: nome, tamanho,extensao e data de criação)

3º----- Download dos arquivos encontrados

 

Qualquer coisa ja sera de grande ajuda.

VLw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu nao etendi muito bem esse tutorial do Macoratti! parece que ele ensina a configurar o FTP em VB.net para window form!

Eu preciso de c# pra web xD.

Ainda nao consigo converter assim.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Movido Plataforma .NET http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Plataforma .NET » Web Applications

 

Este artigo faz justamente o que pediu, ele lista os arquivos locais e os arquivos ftp e pode ser feito up e down.

O problema é que é windows e vb.

 

Vou ver se encontro algo em C#.

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu achei um site com o codigo para listar os itens da pasta depois do seach!

http://foreachcode.wordpress.com/2008/10/1...e-um-diretorio/

 

consegui resolver a parte de listar os arquivos ! estava com problema para achar a forma correta de colocar o endereço da pasta! que ficoua ssim:

loadFolder(gvResultadoBusca, Server.MapPath(@"~/pasta/"));

o problema é que eu estou listando os arquivos com um if:

 

if (nome.Text == "Homolog" &&   TipCli.Text == "Juridico" && Ano.Text == "2004")
{
gridViewBusca.Visible = true;

codigo que preenche o grid puxando os arquivos da pasta
}
	
else
{
gridViewBusca.Visible = false;
}

Só que isso nao é nada pratico, por que vou ter que fazer um if para cada nome, tipo de cliente e ano existente! imagina quantos vao existir! deve haver uma maneira mais pratica.

 

Agradeço a ajuda.

abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara você esta batendo em quesitos que não tem muito a ver com a tecnologia .NET

Você quer listar todas as pastas de um diretório e esconder a pasta x e pasta Y, você terá que informar manualmente, ou retirar esta pasta X e Y desta diretório.

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nao tem a ver com .Net? Como assim?

Eu preciso dar um search de acordo com os dados da busca! Nao entendi por que nao tem a ver! eu nao posso retirar a pasta! ela tem que existir. Mas se nao tem outra maneira entao beleza.

se alguem puder me ajudar nos outros pontos vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, eu vi que ele queria abrir os arquivos de uma pasta para edita-los. Entao o primeiro codigo postado nao me ajudaria nao é!? no ultimo ele utiliza aquele metodo, mas acho que com o mesmo objetivo de editar os arquivos da pasta!?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui resolver! sem usar if fiz o sistema de busca a partir do que for selecionado nos comoBox usando DirectoryInfo!

 

protected void btBuscarArquivos_Click(object sender, EventArgs e)
	{
		loadFolder(gvResultadoBusca, Server.MapPath(@"/pasta" + "/" + comboBox1.SelectedItem.Text.Trim()
											  + "/" + ComboBox2.SelectedItem.Text.Trim()
											  + "/" + comboBox3.SelectedItem.Text.Trim() + "/"));
	}

Dessa forma eu adiciono ao caminho original (C:\Documents and Settings\andre.m.COLDWELL\Desktop\Documentação\pasta) o que for selecionado no combo! para isso as pastas e subpastas devem existir e ter o mesmo nome do que for selecionado.

 

Falta agora a ULTIMA PARTE!!!!!!!!!!!!!!!!!

 

fazer o download dos arquivos que estiverem selecionados pelo checkBox.

Eu achei achei um codigo mas ainda nao esta funcionando:

 

protected void btnDownload_Click(object sender, EventArgs e)
	{
		 FileInfo arquivo = default(FileInfo);
		 string nomeArquivo = null;

		 foreach (GridViewRow gvr in gvResultadoBusca.Rows)
		 {
			 CheckBox checkBox = gvr.FindControl("chkSelect") as CheckBox;
					
		 nomeArquivo = Server.MapPath(@"/pasta" + "/" + comboBox1.SelectedItem.Text.Trim()
											  + "/" + ComboBox2.SelectedItem.Text.Trim()
											  + "/" + comboBox3.SelectedItem.Text.Trim() + "/" + checkBox.Checked+ "/");
			
		 arquivo = new FileInfo(nomeArquivo);  
	   
		
		 Response.Clear();
		 Response.AddHeader("Content-Disposition", "attachment; filename=" + checkBox.Checked); 
		 Response.AddHeader("Content-Length", arquivo.Length.ToString());
		 Response.ContentType = "application/octet-stream";
		 Response.WriteFile(nomeArquivo);	 
		 Response.End();
		 }
	}

só eu ainda nao estou capturando o arquivo que esta selecionado pelo checkBox! ele chama o valor TRUE (checked=true) e nao o arquivo! Alem disso eu preciso configurar para baixar todos os arquivos de uma vez que etiverem selecionados pelo check.

 

Brigadao. to quase no fim! Agradeço toda a ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entao, eu mudei pra text mas ele ainda nao retorna o nome do arquivo! apenas true! e ele ainda mostra o erro:

 

Could not find file 'C:\pasta\comboBox1\comboBox2\comboBox3\'.

 

Ele deveria mostrar o nome do arquivo selecionado no final do endereço!

Eu tentei assim:

 

protected void btnDownload_Click(object sender, EventArgs e)
	{
			foreach (GridViewRow gvr in this.gvResultadoBusca.Rows)
			{
				string arquivoSelec = gvr.Cells[1].Text;
				DirectoryInfo nomeArquivo = new DirectoryInfo("pastaEntrada/subpasta" + "/" + comboBox1.SelectedItem.Text.Trim()
											+ "/" + comboBox2.SelectedItem.Text.Trim() + "/" + comboBox3.SelectedItem.Text.Trim()
											+ "/" + arquivoSelec);
		   
				//bool check = (gvr.FindControl("chkSelect") as CheckBox).Checked;
				CheckBox check = gvr.FindControl("chkSelect") as CheckBox;
				if (check.Checked)
				{

					Response.Clear();
					Response.AddHeader("Content-Disposition", "attachment; filename=");
					Response.AddHeader("Content-Length", arquivoSelec.Length.ToString());
					Response.ContentType = "application/octet-stream";
					Response.WriteFile(nomeArquivo.FullName);
					Response.End();
				}
			}   
		}

Eu consego fazer o download mas quando eu seleciono um item e mando baixar ele mostra a extensao como htm,e o arquivo é txt.

 

fora isso, falta só configurar para poder baixar mais de 1 arquivo selecionado ao memso tempo!

Agradeço a ajuda de todos, preciso muito terminar esse projeto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ele nao reconheceu o gvr!!!! e se eu referencio o gvr dai ele nao permiti usar o Row.! tipo:

 

string arquivoSelec = gvr.Rows.Cells[1].Text;

 

Eu tentei substituir pelo proprio nome do gridView mas dai ele da erro mais pra frente!

no:

 

if (check.Checked)

{

 

Response.Clear();

Response.AddHeader("Content-Disposition", "attachment; filename=");

Response.AddHeader("Content-Length", arquivoSelec.Length.ToString());

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

Response.WriteFile(nomeArquivo.FullName);

Response.End();

}

 

System.NullReferenceException: Object reference not set to an instance of an object.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mano eu complementei coloquei o .Row no CheckBox check = gvResultadoBusca.Rows.FindControl("chkSelect") as CheckBox;

agora ta funfando mas nao mudo nada! eu seleciono todos mas ele faz o download só do primeiro item.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.