none
[C#] Verificação existência de arquivo com FileUpload RRS feed

  • Pergunta

  • Olá pessoas,

    Não estou conseguindo fazer a verificação da existência de um arquivo com o FileUpload. Abaixo como estou tentando a implementação:

    Tela.aspx

    <asp:FileUpload ID="uploadXML" runat="server"  Style="top: 312px; left: 555px; position: absolute;
                height: 20px; width: 290px" />

    Tela.aspx.cs

     protected void btnVerificaArquivo_Click(object sender, EventArgs e) {
                if (uploadXML.HasFile)
                {
                    //doStuff
                }
                else
                {
                    string script = "<script type=\"text/javascript\">alert('Arquivo não existe');</script>";
                    ClientScript.RegisterClientScriptBlock(this.GetType(), "Alerta: Arquivo não existe", script);
                }
            }

    Alguém pode me ajudar? Já tentei vários códigos diferentes e nenhum funciona. Não sou capaz de perceber onde está o erro em meu código.

    Obrigado


    Fernando Stocco

    segunda-feira, 8 de outubro de 2012 18:48

Respostas

  • Experimenta usar jQuery
    http://blueimp.github.com/jQuery-File-Upload/
    http://www.uploadify.com

    Abraços,


    André Baltieri
    MTAC – Microsoft Technical Audience Contributor

    Twitter: @andrebaltieri
    Blog: http://andrebaltieri.net

    segunda-feira, 8 de outubro de 2012 22:45
  • coloque  enctype="multipart/form-data" na tag <form>

    <form enctype="multipart/form-data">

    Se não funcionar, no evento em que é disparado no botão no debug, ve se a propriedade FileName do fileupload vem preenchida.

    segunda-feira, 8 de outubro de 2012 20:16

Todas as Respostas

  • Qual o erro?
    segunda-feira, 8 de outubro de 2012 18:58
  • Não me devolve erro. Simplesmente quando clico no botão pra verificar o arquivo, é como se ele nunca tivesse estado lá, mesmo eu selecionando alguma coisa - estou tentando com arquivos xml.

    Fernando Stocco

    segunda-feira, 8 de outubro de 2012 19:03
  • Você está usando UpdatePanel?
    segunda-feira, 8 de outubro de 2012 19:27
  • Se estiver usando updatepanel não vai funcionar :(
    segunda-feira, 8 de outubro de 2012 19:31
  • Não. Não estou usando UpdatePanel. É minha primeira aplicação de verdade com ASPX e C#, então estou usando só o FileUpload e tentando usar o hasFile no C#... Se tem mais alguma coisa aí no meio que deveria utilizar foi ignorada por não conhecer bem a linguagem.

    Fernando Stocco

    segunda-feira, 8 de outubro de 2012 19:33
  • o HasFile vem sempre como false?
    segunda-feira, 8 de outubro de 2012 19:39
  • Aparentemente sim. Em todos os testes que fiz até agora o valor de retorno é false independendo do arquivo adicionado.

    Fernando Stocco

    segunda-feira, 8 de outubro de 2012 19:45
  • Posta o código todo do seu aspx e do cs
    segunda-feira, 8 de outubro de 2012 19:49
  • Infelizmente não tenho autorização para postar todo o código fonte. O local que eu trabalho não permite a divulgação total de nada que esteja em desenvolvimento. Como ninguém tem tempo de me ajudar, consegui liberação de uma parte dele. Aqui vai:

    Página aspx:

    <asp:Label ID="lbSquare" runat="server" Style="top: 180px; left: 50px; ;
                height: 19px; width: 45px" Text="Praça:"></asp:Label>
    
            <asp:DropDownList ID="squareOption" runat="server" name=" D3" Style="top: 178px;
                left: 100px; width: 170px; " AutoPostBack="true" OnSelectedIndexChanged="squareOption_SelectedIndexChanged">
                <asp:ListItem></asp:ListItem>
            </asp:DropDownList>
    
            <asp:Label ID="sessoes" runat="server" Text="Sessões:" Style="top: 220px; left: 50px;
                "></asp:Label>
    
            <asp:ListBox ID="boxSessoes" runat="server" Width="300px" Height="150px" Style="top: 240px;
                left: 50px; " ></asp:ListBox>
    
            <asp:Label ID="lbSessoes" runat="server" Style="top: 180px; left: 555px; ;
                height: 19px; width: 93px" Text="Nova Sessão:"></asp:Label>
    
            <input type="text" id="txtNovaSessao" runat="server" style="top: 178px; left: 648px;
                ; height: 15px; width: 150px"  />
    
            <asp:Label ID="lbDataInicio" runat="server" Style="top: 220px; left: 555px; ;
                height: 15px; width: 83px" Text="Data Início:" ></asp:Label>
    
            <input id="startDate" runat="server" class="datetype" style="top: 242px; left: 555px;
                ; height: 15px; width: 83px" />
    
            <asp:Label ID="lbDataFim" runat="server" Style="top: 220px; left: 690px; ;
                height: 15px; width: 83px" Text="Data Fim:"></asp:Label>
    
            <input id="finalDate" runat="server" class="datetype" style="top: 242px;  left: 690px;
                ; height: 15px; width: 83px" />
    
            <!-- FileUpLoad -->
    
            <asp:Label ID="lbUploadXML" runat="server"  Style="top: 290px; left: 555px; ;
                height: 15px; width: 180px" Text = "Arquivo de Públicos:"></asp:Label>
    
            <asp:FileUpload ID="uploadXML" runat="server"  Style="top: 312px; left: 555px; ;
                height: 20px; width: 290px" />
    
            <!-- Buttons -->
    
            <asp:Button ID="btSelecionar" runat="server" Style="top: 395px; left: 60px; "
                Text="Selecionar" Width="100px" Height="23px" OnClick="btnSelecionar_Click"  />
    
            <asp:Button ID="btExcluir" runat="server" Style="top: 395px; left: 165px; "
                Text="Excluir" Width="100px" Height="23px" OnClick="btnExcluir_Click" />
    
            <asp:Button ID="btSalvar" runat="server" Style="top: 177px; left: 808px; "
                Text="Salvar" Width="100px" Height="23px" OnClick="btnSalvar_Click" OnClientClick="return validaCamposNovaSessao()" />
        </div>
        </form>

    C#

    protected void btnSalvar_Click(object sender, EventArgs e)
            {
    
                int regionId = util.Globals.square_id[squareOption.SelectedIndex];
                String sessaoNome = txtNovaSessao.Value;
                string dataInicio = startDate.Value;
                string dataFim = finalDate.Value;
    
                if (uploadXML.HasFile)
                {
                    database.Util.addSessao(regionId, sessaoNome, dataInicio, dataFim);
                    clearFields();
                    clearListBox();
                    database.Util.loadList(regionId, boxSessoes);
                }
                else
                {
                    string script = "<script type=\"text/javascript\">alert('Arquivo inexistente.');</script>";
                    ClientScript.RegisterClientScriptBlock(this.GetType(), "Alerta: Arquivo inexistente.", script);
                }
            }


    Fernando Stocco

    segunda-feira, 8 de outubro de 2012 20:03
  • coloque  enctype="multipart/form-data" na tag <form>

    <form enctype="multipart/form-data">

    Se não funcionar, no evento em que é disparado no botão no debug, ve se a propriedade FileName do fileupload vem preenchida.

    segunda-feira, 8 de outubro de 2012 20:16
  • Fiz o teste aqui e funcionou de primeira cara...

            <asp:FileUpload ID="FileUpload1" runat="server" />
            <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />

            protected void Button1_Click(object sender, EventArgs e)
            {
                if (FileUpload1.HasFile)
                {
                    //Testando....
                    FileUpload1.PostedFile.ToString();
                }
            }

    Crie uma página em branco e cole isso lá... veja se funciona.
    segunda-feira, 8 de outubro de 2012 20:22
  • Por que você tem aquele botão de selecionar?
    segunda-feira, 8 de outubro de 2012 20:26
  • Esse botão selecionar está vinculado com outras ações nessa página.  Eu não posso comentar exatamente o que está fazendo por funções contratuais da empresa... mas ele não tem nenhuma relação direta com o arquivo que preciso verificar.

    Fernando Stocco

    segunda-feira, 8 de outubro de 2012 20:37
  • coloque  enctype="multipart/form-data" na tag <form>

    <form enctype="multipart/form-data">

    Se não funcionar, no evento em que é disparado no botão no debug, ve se a propriedade FileName do fileupload vem preenchida.

    Não funcionou. Entretanto, quando faço o Debug a função if está me retornando true. O interessante é que, mesmo assim, ele desvia como se fosse negativo.

    Vou continuar testando amanhã. Vou para casa agora. Gostaria de agradecer a todos pela ajuda até o momento! :)


    Fernando Stocco

    segunda-feira, 8 de outubro de 2012 20:40
  • Você não tem nenhum comando no Page Load que limpa o campo FileUpload?
    segunda-feira, 8 de outubro de 2012 20:46
  • Teste o meu código... vai funcionar, depois replique no seu web form.
    segunda-feira, 8 de outubro de 2012 20:47
  • Experimenta usar jQuery
    http://blueimp.github.com/jQuery-File-Upload/
    http://www.uploadify.com

    Abraços,


    André Baltieri
    MTAC – Microsoft Technical Audience Contributor

    Twitter: @andrebaltieri
    Blog: http://andrebaltieri.net

    segunda-feira, 8 de outubro de 2012 22:45
  • Jquery é sempre melhor mesmo!
    terça-feira, 9 de outubro de 2012 00:01
  • Teste o meu código... vai funcionar, depois replique no seu web form.

    Eu testei. Não funcionou, mas simplesmente porque eu descobri que, por algum motivo maluco, o meu PC está "louco". Testei em outro computador e tudo o que me foi indicado aqui funcionou corretamente. Mas não na minha máquina. Vou formatar o PC e reinstalar as coisas e ver se volta ao normal.

    Muito obrigado pela ajuda de todos!! :)


    Fernando Stocco

    terça-feira, 9 de outubro de 2012 14:23
  • Descobri o problema. É ambiente. Por algum motivo o software meu está "desregulado". Vou formatar o pc e reinstalar tudo. Já tentei desinstalar o Microsoft Visual e depois reinstalá-lo, mas não funcionou. Testei em outra máquina e rodou tudo certinho.

    Muito obrigado pela ajuda. Todas elas foram úteis e deu pra aprender coisas que eu não sabia.

    Abraços.


    Fernando Stocco

    terça-feira, 9 de outubro de 2012 14:27