Jump to content

Archived

This topic is now archived and is closed to further replies.

André Mailho

Configurar FTP para download de arquivos, em C#

Recommended Posts

pesquisando eu descobri que não é possível, com uma única requisição, fazer o download de vários arquivos, um em seqüência do outro. E que eu preciso fazer o download de um unico arquivo compactado! Eu descobri como compactar um arquivo, mas nao como fazer isso com varios arquivos selecionados.

alguem faz ideia?

Share this post


Link to post
Share on other sites

Entao, mas eu nao quero compactar a pasta inteira! nem arquivos fixos. Tem que ser os arquivos que forem selecionados.

To me matando aqui e nao to encontrando um meio.

 

Esse é o codigo que eu uso para compactar! teoricamente ele ja deveria estar compactando todos os selecionados mas isso nao esta acontecendo.

 

 

protected void btnDownload_Click(object sender, EventArgs e)
	{
		for (int i = 0; i < gvResultadoBusca.Rows.Count; i++)
		{
			string arquivoSelec = gvResultadoBusca.Rows[i].Cells[1].Text;
			CheckBox check = gvResultadoBusca.Rows[i].FindControl("chkSelect") as CheckBox;

			DirectoryInfo nome = new DirectoryInfo("SIF/fileOutPut" + "/" + comboBox1.SelectedItem.Text.Trim()
										+ "/" + comboBox2.SelectedItem.Text.Trim() + "/" + comboBox3.SelectedItem.Text.Trim()
										+ "/");

			if (check.Checked == true)
			{
				   
					Response.Clear();
					//String ReadmeText = "This is a zip file dynamically generated at " + System.DateTime.Now.ToString("G");
					string filename = System.IO.Path.GetFileName(arquivoSelec.ToString()) + ".zip";
					Response.ContentType = "application/zip";
					Response.AddHeader("content-disposition", "filename=" + filename);
					Response.Flush();

					if (lblMensagem.Text == "Versão 1 existe")
					{
						DirectoryInfo nomeArquivo = new DirectoryInfo(nome + "/v1/" + "/" + arquivoSelec);
						
						using (ZipFile zip = new ZipFile(Response.OutputStream))
						{
							zip.AddFile(nomeArquivo.FullName, "");
							zip.Save();
						}
					}

					else if (lblMensagem.Text == "Versão 2 existe")
					{
						DirectoryInfo nomeArquivo = new DirectoryInfo(nome + "/v2/" + "/" + arquivoSelec);
						using (ZipFile zip = new ZipFile(Response.OutputStream))
						{
							zip.AddFile(nomeArquivo.FullName, "");
							zip.Save();
						}
					}

					else if (lblMensagem.Text == "Versão 3 existe")
					{
						DirectoryInfo nomeArquivo = new DirectoryInfo(nome + "/v3/" + "/" + arquivoSelec);
						using (ZipFile zip = new ZipFile(Response.OutputStream))
						{
							zip.AddFile(nomeArquivo.FullName, "");
							zip.Save();
						}
					}

					else if (lblMensagem.Text == "Versão 4 existe")
					{
						DirectoryInfo nomeArquivo = new DirectoryInfo(nome + "/v4/" + "/" + arquivoSelec);
						using (ZipFile zip = new ZipFile(Response.OutputStream))
						{
							zip.AddFile(nomeArquivo.FullName, "");
							zip.Save();
						}
					}

					else if (lblMensagem.Text == "Versão 5 existe")
					{
						DirectoryInfo nomeArquivo = new DirectoryInfo(nome + "/v5/" + "/" + arquivoSelec);
						using (ZipFile zip = new ZipFile(Response.OutputStream))
						{
							zip.AddFile(nomeArquivo.FullName, "");
							zip.Save();
						}
					}

					else if (lblMensagem.Text == "Versão 6 existe")
					{
						DirectoryInfo nomeArquivo = new DirectoryInfo(nome + "/v6/" + "/" + arquivoSelec);
						using (ZipFile zip = new ZipFile(Response.OutputStream))
						{
							zip.AddFile(nomeArquivo.FullName, "");
							zip.Save();
						}
					}

					else if (lblMensagem.Text == "Versão 7 existe")
					{
						DirectoryInfo nomeArquivo = new DirectoryInfo(nome + "/v7/" + "/" + arquivoSelec);
						using (ZipFile zip = new ZipFile(Response.OutputStream))
						{
							zip.AddFile(nomeArquivo.FullName, "");
							zip.Save();
						}
					}

					else if (lblMensagem.Text == "Versão 8 existe")
					{
						DirectoryInfo nomeArquivo = new DirectoryInfo(nome + "/v8/" + "/" + arquivoSelec);
						using (ZipFile zip = new ZipFile(Response.OutputStream))
						{
							zip.AddFile(nomeArquivo.FullName, "");
							zip.Save();
						}
					}

					else if (lblMensagem.Text == "Versão 9 existe")
					{
						DirectoryInfo nomeArquivo = new DirectoryInfo(nome + "/v9/" + "/" + arquivoSelec);
						using (ZipFile zip = new ZipFile(Response.OutputStream))
						{
							zip.AddFile(nomeArquivo.FullName, "");
							zip.Save();
						}
					}

					else if (lblMensagem.Text == "Versão 10 existe")
					{
						DirectoryInfo nomeArquivo = new DirectoryInfo(nome + "/v10/" + "/" + arquivoSelec);
						using (ZipFile zip = new ZipFile(Response.OutputStream))
						{
							zip.AddItem(nomeArquivo.FullName, "");
							zip.Save();
						}
					}
					Response.End();
				}
			}
		}

Share this post


Link to post
Share on other sites

eu tentei colocar um outro for:

 

for (int a = 0; a < check.Items.Count; a++)

 

e substituir o

 

DirectoryInfo nomeArquivo = new DirectoryInfo(nome + "/v10/" + "/" + arquivoSelec);

 

por

 

DirectoryInfo nomeArquivo = new DirectoryInfo(nome + "/v10/" + "/" + check.SelectedValue);

 

 

mas agora ele compacta todos os arquivos e nao apenas os selecionados

 

(ta osso!)

Share this post


Link to post
Share on other sites

a questao quintelab é que dessa forma eu caio no mesmo problema denovo! preciso selecionar apenas os arquivos que foram marcados no checkBox! Essa é a minha dificuldade, se eu conseguisse isso poderia tanto transferir para um novo diretorio quanto zipar os arquivos ou qualquer outra coisa.

Share this post


Link to post
Share on other sites

Mas pelo que entendi você ja conseguiu selecionar os arquivos só não conseguiu fazer o download pois como disse só é permitido um por vez. Mas ao invés de fazer o download tente copiar para uma outra pasta para compacta-la.

 

Abraços...

Share this post


Link to post
Share on other sites

entao, eu posso fazer isso! ao invez de fazer o donwload copiar os arquivos para uma outra pasta!

 

mas é ai que esta o problema.

 

como eu faço para copiar os arquivos selecionados para esta outra pasta! eu consigo apenas selecionar 1 arquivo por vez. como eu faria para mover todos os arquivos selecionados de uma vez???????????????

 

se eu descobrir isso tanto faz mover para outra pasta ou compacta-los direto.

 

 

tendeu? eu nao sei como selecionar todos os arquivos escolhidos de uma vez.

Share this post


Link to post
Share on other sites

entao, mas nao sera o mesmo arquivo sempre! esta pasta sera atualizada constantemente. os arquivos irao mudar e o nome tambem.

eu preciso saber como capturar os itens que forem selecionados

Share this post


Link to post
Share on other sites

Tudo bem que os nomes mudem, você esta se prendendo em algo que não consigo encontrar dificuldade.

Na sua grid tem la:

 

Código Produto

1 XXXX

2 YYYY

 

Se a pessoa clicar no produto de código 1, você sabe que tem ir na pasta:

C:/SuaPasta/XXXX.doc

 

Abraços...

Share this post


Link to post
Share on other sites

Exato !!!!! Agora ficou mais parecido com o que eu estava dizendo (ou nao tinha entendido).

É disso mesmo que eu preciso.Como eu faço para capturar o valor dos checkbox (linhas) selecionadas?! Eu só consigo capturar 1 por vez.

 

tentei usar um Foreach com selectValue mas dessa vez ele esta selecionando todos os arquivos da pasta de uma vez.

 

for (int a = 0; a < check.Items.Count; a++)
		{
			if (check.Items[a].Selected)
			 {
					  Response.Clear();
						string filename = System.IO.Path.GetFileName(arquivoSelec.ToString()) + ".zip";
						Response.ContentType = "application/zip";
						Response.AddHeader("content-disposition", "filename=" + filename);

			   if (lblMensagem.Text == "Versão 1 existe")
						{
							DirectoryInfo nomeArquivo = new DirectoryInfo(nome + "/v1/" + "/" + check.SelectedValue);	 
			////////////////// // ou ainda:  DirectoryInfo nomeArquivo = new DirectoryInfo(nome + "/v1/" + "/" + check.Items[a].value);	 

						 using (ZipFile zip = new ZipFile(Response.OutputStream))
							   {
								  zip.AddItem(nomeArquivo.FullName, "");
								   zip.Save();
								   zip.Dispose();
								}
						  }

						   else if (lblMensagem.Text == "Versão 2 existe")
							{
							  DirectoryInfo nomeArquivo = new DirectoryInfo(nome + "/v2/" + "/" + check.SelectedValue);
							   using (ZipFile zip = new ZipFile(Response.OutputStream))
							   {
								  zip.AddItem(nomeArquivo.FullName, "");
								   zip.Save();
								   zip.Dispose();
								}
							}
					   }
				   }

realmente nao faço ideia!

vlw pela força

Share this post


Link to post
Share on other sites

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.