Ir para conteúdo

POWERED BY:

Arquivado

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

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?

Compartilhar este post


Link para o post
Compartilhar em outros 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();
				}
			}
		}

Compartilhar este post


Link para o post
Compartilhar em outros 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!)

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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...

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você disse que não consegue pegar o aquivo pela grid somente o nome dele.

Se você sabe em qual pasta ele esta com base nesse nome da grid você irá conseguir pegar o arquivo e fazer a cópia para outra pasta.

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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...

Compartilhar este post


Link para o post
Compartilhar em outros 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

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.