Ir para conteúdo

POWERED BY:

Arquivado

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

FBO_85

C# + varios .TXT

Recommended Posts

Fala galera,

 

Estou com um problema aqui que esta me tirando do sério, desenvolvi uma aplicação na qual tenho de criar varios arquivos TXT, um para cada caso e isso em uma única chamada(no clique do botão), e não vai de jeito nenhum, o motivo pelo que vi é que a aplicação não tem acesso de criação/deletação na pasta onde ponho os TXT e não tenho como conseguir esta permissão. Então mudei para não gravar os arquivos no servidor, mas faço isso usando o Response, mas ele só me deixa criar um arquivo, no segundo ele me da um Exception avisando que o cabeçalho já foi enviado(???)!!

 

Alguém já brincou com isso e tem alguma luz, pois não tenho mais ideia do que fazer, se preferirem eu posto os 2 códigos que utilizei para criar estes TXT.

 

 

Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poste o código e a mostre a linha onde da o erro.

 

Abraços...

 

opa, apareceram outros pepinos e acabei deixando esta encrenca de lado, mas segue o código abaixo:

 



#region -- Verifica a pasta onde será colocado os arquivos (Cria/Limpa)
/* recupera o caminho onde salvará os arquivos */
DirectoryInfo di = new DirectoryInfo(this.Page.MapPath(@"TEMP_ENVIOS/"));

/* verifica se a pasta existe, caso não exista a cria */
if (!di.Exists)
  di.Create();

/* verifica se há arquivos, caso haja deleta os anteriores a data de hoje */
FileSystemInfo[] fsi = di.GetFileSystemInfos();
for (int i = 0; i < fsi.Length; i++)
  if (fsi[i].CreationTime < DateTime.Now)
     fsi[i].Delete();
#endregion

/* existe um for aqui no meio mto monstro, então nem vou postar, somente vou preencher as variáveis no qual irei usuar abaixo */
string strTitulo  = "ArquivoTeste";
string strTexto   = "TESTE CONTEUDO DO ARQUIVO TESTE CONTEUDO DO ARQUIVO";


/* ABAIXO É ONDE ESTA O GRANDE PROBLEMA  */

string CaminhoArquivo = (this.MapPath(@"/TEMP_ENVIOS/") + @strTitulo + ".txt");

/* cria o arquivo */
FileInfo fiCriaArquivo = new FileInfo(CaminhoArquivo);
fiCriaArquivo.Create();  //<<<<---- AQUI ESTA A ENCRENCA !!!

FileInfo arquivo = new FileInfo(fiCriaArquivo.Name);

/* abre o arquivo para inserção do texto */
using (StreamWriter sw = arquivo.CreateText())
{
  /* insere o texto no arquivo */
  sw.WriteLine(strTexto);

  /* fecha o arquivo */
  sw.Flush();
  sw.Close();
  
  /* abre o processo do arquivo criado na tela, mostra o arquivo na tela */
  System.Diagnostics.Process.Start(arquivo.Name);
}

se alguem tiver alguma luz, eu vou agradecer e muito !!!

 

valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você está abrindo o arquivo no servidor?

 

No caso de usar o response, coloque um response.End(); depois para que o processamento seja encerrado assim que o response seja realizado.

 

 

Obs.: Posta a exception pra gente, que ajuda bem. :=D

 

 

Atenciosamente

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você está abrindo o arquivo no servidor?

 

No caso de usar o response, coloque um response.End(); depois para que o processamento seja encerrado assim que o response seja realizado.

 

 

Obs.: Posta a exception pra gente, que ajuda bem. :=D

 

 

Atenciosamente

 

então cara, ja tentei usar o response, o que ocorre é que quando eu abro somente um arquivo ele funfa, mas quando eu tento abrir mais que um, que é o meu caso, no segundo ele me retorna um erro de que o cabeçalho ja foi enviado!

 

e quando eu uso o response.end() ele sempre me retorna este erro:

Unable to evaluate expression because the code is optimized or a native frame is on top of the call stack.
isso no primeiro arquivo que tento exportar, mas ele me mostra a tela para download no cliente, então eu acabo ignorando-o.

 

se eu retirar o response.end() e utilizar o response.flush() ele passa sem erro, mas no segundo arquivo ele me retorna este outro erro:

Servidor não pode anexar um cabeçalho após os cabeçalhos HTTP terem sido enviados.
isso na linha:

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

 

então resolvi abandonar o response e tentar da outra forma que mostro acima.

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.