none
Upload de Arquivos

    Question

  • Pessoal boa tarde,

    Existe um sistema de upload,onde os arquivos são salvos na pasta e as informações como nome do arquivo entre outros é salvo em um banco de dados,o arquivo entre outros e mostrado no grid logo abaixo,acontece que ao clicar em upload mesmo sem ter clicado em procurar,para procurar o arquivo é salvo aparentemente em branco,tanto que no grid mostra em nome do arquivo em branco,ou seja no banco de dados acabou sendo salvo em branco.

    Como faço para resolver esse problema?? Como apenas fazer o upload se de fato o usuario procurar o arquivo??

    Tem como verificar se a caixinha onde vai o caminho do arquivo,se ela esta ou não vazia? ou como identificar se existe arquivo?

    Muito Obrigado,

    Leandro Molina


    Leandro
    Friday, January 30, 2009 7:15 PM

Answers

  • If FileUpload1.HasFile Then

    'tem aquivo

     

    else

    'não tem arquivo

     

    End If

     

    espero ter ajudado ^^

    • Marked as answer by Leandro Molina Monday, February 02, 2009 7:00 PM
    Friday, January 30, 2009 8:17 PM
  • Olá Leandro,

    O controle FileUpload possui uma propriedade booleana chamada HasFile, que indica se foi enviado ou arquivo (true) ou não (false):

     
        // Foi enviado um arquivo? 
        if (arquivo.HasFile) 
        { 
            // Sim... Então grava na pasta correta... 
     
            //... 
        } 
     


    Abraços,
    Caio Proiete


    Caio Proiete
    http://www.caioproiete.com
    • Marked as answer by Leandro Molina Monday, February 02, 2009 6:59 PM
    Monday, February 02, 2009 12:15 PM
    Moderator
  • Leandro,

    você tem como recuperar os dados do arquivo, salvar o arquivo uma única vez, no primeiro evento da página após o arquivo ter sido selecionado.

    Após esse Load da página, os dados do FileUpload são removidos por questões de segurança.

    Você deve recuperar o arquivo(salva-lo), recuperar o nome e todos os dados necessários nesse primeiro Load.


    Pedro Golino
    • Marked as answer by Leandro Molina Monday, February 02, 2009 7:00 PM
    Saturday, January 31, 2009 1:17 AM
  •  Obrigado pelo retorno de todos.

    Caio tentei usar o HasFile mas o vs não dava opção,apenas dava opção para o PostedFile,sabe me dizer o pq??

    Enfim,consegui resolver dessa forma:

    //Pega o tamnho do arquivo postado no formulário
            int intFileSize = 0;
            intFileSize = arquivo.PostedFile.ContentLength;

            //Se for maior que zero significa que o arquivo subiu,então executa.
            if (intFileSize > 0)
            {
           

    Muito Obrigado pela ajuda.


    Leandro
    • Marked as answer by Leandro Molina Monday, February 02, 2009 6:59 PM
    Monday, February 02, 2009 6:59 PM

All replies

  • Leandro,Se eu entendi corretamente, você quer verificar se algum arquivo foi selecionado no campo de "File".

    Você pode verificar assim:

    if (this.FileUpload1.PostedFile != null)

    //Tem arquivo

    else

    //Nao tem arquivo.

    Se seu problema não for este, por favor, explique melhor.

    Abraços.


    [MCPD] Web Developer 2.0 e 3.5
    Friday, January 30, 2009 8:13 PM
  • If FileUpload1.HasFile Then

    'tem aquivo

     

    else

    'não tem arquivo

     

    End If

     

    espero ter ajudado ^^

    • Marked as answer by Leandro Molina Monday, February 02, 2009 7:00 PM
    Friday, January 30, 2009 8:17 PM
  • Leandro,

    você tem como recuperar os dados do arquivo, salvar o arquivo uma única vez, no primeiro evento da página após o arquivo ter sido selecionado.

    Após esse Load da página, os dados do FileUpload são removidos por questões de segurança.

    Você deve recuperar o arquivo(salva-lo), recuperar o nome e todos os dados necessários nesse primeiro Load.


    Pedro Golino
    • Marked as answer by Leandro Molina Monday, February 02, 2009 7:00 PM
    Saturday, January 31, 2009 1:17 AM
  •  Obrigado pelo retorno,fiz conforme me orientou,porém ele passa normalmente,o código ficou dessa forma:

    Se for diferente de null então executa pois possui arquivo,se não,apresenta mensagem,porme ele passa normalmente. Quem puder me ajudar.

    Com ou sem arquivo ele executa normal o código dentro da chave.

    if (this.arquivo.PostedFile != null)
            {



                objUp.Sistema = int.Parse(Session["sistema"].ToString());
                objUp.UsuarioAlteracao = Session["usuario"].ToString();
                objUp.OrigemTipo = this.OrigemTipo;
                objUp.OrigemId = this.OrigemId;
                objUp.NomeArquivo = arquivo.PostedFile.FileName.Substring(arquivo.PostedFile.FileName.LastIndexOf("\\") + 1);

                if (dataArquivo.Text != "")
                {
                    CultureInfo MyCultureInfo = new CultureInfo("pt-BR");
                    objUp.DataControle = DateTime.Parse(dataArquivo.Text.ToString(), MyCultureInfo);
                }

                objUp.OrigemTipo = this.OrigemTipo;
                objUp.OrigemId = this.OrigemId;
                objUp.CampoId = this.CampoId;
                objUp.BlocoId = this.BlocoId;
                objUp.FormId = this.FormId;
                objUp.FaseId = this.FaseId;
                objUp.ProcessoId = this.ProcessoId;

                int Id_Arquivo = objUp.DocumentosUploadInc();

                string strTipoArq = "";
                string strNomeArq = arquivo.PostedFile.FileName.Substring(arquivo.PostedFile.FileName.LastIndexOf("\\") + 1);
                strTipoArq = strNomeArq.Substring(strNomeArq.LastIndexOf(".") + 1);

                //Pega o tamnho do arquivo postado no formulário
                int intFileSize = 0;
                intFileSize = arquivo.PostedFile.ContentLength;

                //Se for menor igual a zero significa que não conseguiu subir o arquivo
                if (intFileSize > 0)
                {
                    //Salva o arquivo no diretório correto
                    try
                    {
                        arquivo.PostedFile.SaveAs(HttpContext.Current.Server.MapPath("Upload\\Fornecedores") + "\\" + Id_Arquivo + "." + strTipoArq);
                    }
                    catch (Exception ex)
                    {
                        throw ex;
                    }
                    dataArquivo.Text = "";
                    ListaArquivos();
                }
            }
            else
                lbl_msg.Text = "Por favor,selecione um arquivo para upload!";

               
           
        }


    Muito Obrigado.


    Leandro
    Monday, February 02, 2009 10:17 AM
  • Olá Leandro,

    O controle FileUpload possui uma propriedade booleana chamada HasFile, que indica se foi enviado ou arquivo (true) ou não (false):

     
        // Foi enviado um arquivo? 
        if (arquivo.HasFile) 
        { 
            // Sim... Então grava na pasta correta... 
     
            //... 
        } 
     


    Abraços,
    Caio Proiete


    Caio Proiete
    http://www.caioproiete.com
    • Marked as answer by Leandro Molina Monday, February 02, 2009 6:59 PM
    Monday, February 02, 2009 12:15 PM
    Moderator
  •  Obrigado pelo retorno de todos.

    Caio tentei usar o HasFile mas o vs não dava opção,apenas dava opção para o PostedFile,sabe me dizer o pq??

    Enfim,consegui resolver dessa forma:

    //Pega o tamnho do arquivo postado no formulário
            int intFileSize = 0;
            intFileSize = arquivo.PostedFile.ContentLength;

            //Se for maior que zero significa que o arquivo subiu,então executa.
            if (intFileSize > 0)
            {
           

    Muito Obrigado pela ajuda.


    Leandro
    • Marked as answer by Leandro Molina Monday, February 02, 2009 6:59 PM
    Monday, February 02, 2009 6:59 PM
  • Olá Leandro,

    A propriedade HasFile existe desde o .NET Framewok 2.0... Você está utilizando uma versão inferior?

    FileUpload.HasFile Property
    http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.fileupload.hasfile.aspx

    Abraços,
    Caio Proiete


    Caio Proiete
    http://www.caioproiete.com
    Monday, February 02, 2009 7:14 PM
    Moderator