none
Baixar um arquivo Zipado em um determinado local Asp.Net RRS feed

Respostas

  • Bom dia.

    Tentei fazer varias coisas para resolver melhor problema, aumentei  o tamanho do download, mas não obtive sucesso.

    Então resolvi colocar diminuir o arquivo até chegar um tamanho que funcione, pois funcionava anteriormente.

    Coloquei 60 megas e o download funcionou, então fiz partes de 60 megas.

    • Marcado como Resposta Jeff Valentim segunda-feira, 29 de junho de 2015 11:47
    segunda-feira, 29 de junho de 2015 11:47

Todas as Respostas

  • Poderia dar mais detalhes? Nao temos como de dizer o que esta errado se voce nao nos dizer o que da errado. Qando vc diz que "o codigo nao funciona" voce quer dizer que apresenta um erro? Se sim, qual? Se simplesmente o aquivo nao é baixado voce verificou se há uma interrupçao da transeferencia? Voce utilizou o fiddler para traçar o transaçao.

    att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    quinta-feira, 25 de junho de 2015 13:11
  • Bom dia. Meu Código funciona quando estou testando localmente, quando publico e vou baixar o mesmo áudio(vários áudios zipado em uma pasta) no mesmo caminho da tela nao exibida.

         string folder = Session["folder"].ToString();
                string date = Session["date"].ToString();
                string musica = musica = "2-" + date + "-" + folder + ".zip";


                string fName = @"C:\GravaçõesTelecallClientes\" + folder + "\\" + musica + "";


                System.IO.FileInfo fInfo = new System.IO.FileInfo(fName);
                HttpContext.Current.Response.Clear();
                HttpContext.Current.Response.ContentType = "application/octet-stream";
                 HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=\"" + fInfo.FullName+ "\"");
                HttpContext.Current.Response.AddHeader("Content-Length", fInfo.Length.ToString());
                HttpContext.Current.Response.Flush();
                HttpContext.Current.Response.WriteFile(fInfo.FullName);
                fInfo = null;


    quinta-feira, 25 de junho de 2015 13:46
  • Ok.. mas ocorre um erro? Vc verificou o log no servidor onde é publicada a aplicaçao?

    Aparentemente é um problema de acesso. Lempre que o IIS tem que ter direito de escritura no caminho definido.

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    quinta-feira, 25 de junho de 2015 14:10
  • Desculpe minha ignorância, mas antes funcionava, mas mexeram no IIS  e começou os problemas, só para lembrar que antes os arquivos de download tbm eram menor e o caminho diferente.

    Pode me ajudar como faço para adicionar esse direito do IIS ao caminho ?


    quinta-feira, 25 de junho de 2015 14:33
  • Creio que seja limitação no IIS, você terá que alterar o limite para o seu projeto.

    IIS 6

    https://www.banmanpro.com/support2/File_Upload_limits.asp
    https://iisbrasil.wordpress.com/2012/01/20/dica-2-aumentando-o-limite-de-upload-no-iis-6-0/

    IIS 7

    http://www.webtrenches.com/post.cfm/iis7-file-upload-size-limits
    http://waldyrfelix.net/2011/10/06/aumentando-upload-no-iis-7/

    quinta-feira, 25 de junho de 2015 14:36
  • já estava com 200 megas. No caso seria upload e o download como aumento ?

    quinta-feira, 25 de junho de 2015 15:00
  • Desculpe minha ignorância, mas antes funcionava, mas mexeram no IIS  e começou os problemas, só para lembrar que antes os arquivos de download tbm eram menor e o caminho diferente.

    Pode me ajudar como faço para adicionar esse direito do IIS ao caminho ?


    Comece verificando quais sao os usuarios que tem acesso de escritura no diretorio escolhido. Verifique se entre os usuarios esta o IUSR_<nome do servidor>

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    quinta-feira, 25 de junho de 2015 15:08
  • mesmo se o diretório  esteja no servidor ?

    Vou Verificar .

    quinta-feira, 25 de junho de 2015 15:29
  • Sim.. Por padrao, o IIS tem acesso somente ao INETPUB e a nenhum outro diretorio. 

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    quinta-feira, 25 de junho de 2015 16:17
  • É,  não funcionou ! ainda sim da pagina não exibida quando faço o download.
    quinta-feira, 25 de junho de 2015 18:22
  • MAs qual é o erro. O problema é acesso? Poste aqui o erro obtido.

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    quinta-feira, 25 de junho de 2015 18:31
  • já tem uma semana que estou com esse problema, estou utilizando .zip pode ser o tipo do formato ?

    quinta-feira, 25 de junho de 2015 19:10
  • Ok. Voce esta tentando fazer um UpLoad de um arquivo de 80MB.. é isso? O erro que voce esta obtendo é porque vc esta infringindo alguma regra do IIS ou do Firewall (talves ele pense que seja um ataque DDoS) 

    Veja esse artigo:

    http://ajaxuploader.com/large-file-upload-iis-asp-net.htm

    e esse artigo tambem

    http://stackoverflow.com/questions/9600856/how-to-deliver-big-files-in-asp-net-response

    Mas no geral creio que vc vai ter que usar outro metodo para transmissao desses arquivo, provavelmnete um webservice, como neste projeto abaixo:

    http://www.codeproject.com/Articles/43272/Uploading-Large-Files-Through-Web-Service

    att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------


    quinta-feira, 25 de junho de 2015 19:23
  • William, resolvi fazer o webserviço, mas abre uma nova aba e nao faz o download, poderia me ajudar a verificar aonde estou pecando ?

    WEBSERVIÇO

      public class Down : System.Web.Services.WebService
        {

            [WebMethod]
            public bool UploadFile(string FileName, byte[] buffer, long Offset)
            {
                bool retVal = false;
                try
                {
                    // setting the file location to be saved in the server. 
                    // reading from the web.config file 
                    string FilePath =
                        Path.Combine(ConfigurationManager.AppSettings["upload_path"], FileName);

                    if (Offset == 0) // new file, create an empty file
                        File.Create(FilePath).Close();
                    // open a file stream and write the buffer. 
                    // Don't open with FileMode.Append because the transfer may wish to 
                    // start a different point
                    using (FileStream fs = new FileStream(FilePath, FileMode.Open,
                        FileAccess.ReadWrite, FileShare.Read))
                    {
                        fs.Seek(Offset, SeekOrigin.Begin);
                        fs.Write(buffer, 0, buffer.Length);
                    }
                    retVal = true;
                }
                catch (Exception ex)
                {
                    //sending error to an email id
                   
                }
                return retVal;
            }
        }

    PEGA O ARQUIVO MAS NAO FAZ O DOWNLOAD.

       string FilePath=@"C:\2015-06-24.zip";
                        // starting offset.
                        int Offset = 0;

                        // definir o tamanho do fragmento
                        int ChunkSize = 65536; // 64 * 1024 kb

                        // definir a matriz de buffer de acordo com o chunksize .
                        byte[] Buffer = new byte[ChunkSize];
                        // abrir o arquivo para leitura.
                        FileStream fs = new FileStream(FilePath, FileMode.Open, FileAccess.Read);
                        // criando a ServiceSoapClient que permitirá se conectar ao serviço.
                        Down soap_client = new Down();
                        
                
                        try
                        {
                            // Tamanho do ficheiro de arquivo que está sendo carregado.
                            long FileSize = new FileInfo(FilePath).Length;
                            // Leitura do arquivo.
                            fs.Position = Offset;
                            int BytesRead = 0;
                            // Continuar enviando os pedaços de arquivos até offset = tamanho do arquivo.
                    while (Offset != FileSize) 
                   
                        {
                        BytesRead = fs.Read(Buffer, 0, ChunkSize); // read the next chunk 
                        // ( Se existir) para a memória intermédia .
                        // O loop while terminará se não há mais nada para ler
                        // Verificar se este for o último pedaço e redimensionar o buffer conforme necessário
                        // Para evitar o envio de um buffer principalmente vazio
                        // (Poderia ser 10Mb de 000000000000s em um grande pedaço )
                        if (BytesRead != Buffer.Length)
                        {
                        ChunkSize = BytesRead;
                        byte[] TrimmedBuffer = new byte[BytesRead];
                        Array.Copy(Buffer, TrimmedBuffer, BytesRead);
                        Buffer = TrimmedBuffer; // the trimmed buffer should become the new 'buffer'
                        }
                        // Enviar este pedaço para o servidor. ele é enviado como um byte [] parâmetro ,
                        // Mas o cliente eo servidor ter sido configurado para codificar byte [] usando MTOM .
                        bool ChunkAppened = soap_client.UploadFile(Path.GetFileName(FilePath), Buffer, Offset);
                        if (!ChunkAppened)
                        {
                        break;
                        }

                        // Deslocamento só é atualizado depois de um envio bem-sucedido dos bytes. 
                        Offset += BytesRead;// Salvar a posição de deslocamento para o resumo
                     }
                  }
                        catch (Exception ex)
                        {
                        }
                        finally
                        {
                        fs.Close();
                        }


    quinta-feira, 25 de junho de 2015 22:12
  • JA DD

    <addkey="upload_path"value="d:\files\"></add>

    quinta-feira, 25 de junho de 2015 22:13
  • Bom dia.

    Tentei fazer varias coisas para resolver melhor problema, aumentei  o tamanho do download, mas não obtive sucesso.

    Então resolvi colocar diminuir o arquivo até chegar um tamanho que funcione, pois funcionava anteriormente.

    Coloquei 60 megas e o download funcionou, então fiz partes de 60 megas.

    • Marcado como Resposta Jeff Valentim segunda-feira, 29 de junho de 2015 11:47
    segunda-feira, 29 de junho de 2015 11:47