none
Ajuda com Upload RRS feed

  • Pergunta

  •  

    Amigos.

     

    Tenho uma página com aspx assim:

    <div><br/>
        <asp:FileUpload ID="FileUpload1" runat="server" /><br/>
        <asp:Button ID="Button1" runat="server" Text="Upload" OnClick="Button1_Click" /><br/>
    </div>
    

    E no code-behind tenho o método

    Sub Envio()
    Try
    'Metodo que organiza os arquivos carregado pelo cliente e monta uma coleção de arquivos passados pelo FileUpload
    Dim hfc As HttpFileCollection = Request.Files



    'Metodo HttpPostedFile ao contrario do httpFileCollection ele fornece
    'as informações de um arquivo para ler ou ser salvo.
    Dim hpf As HttpPostedFile = hfc(0) 'Pegando apenas o PRIMEIRO ITEM do request

    If hpf.ContentType = "application/pdf" Then

    FileUpload1.SaveAs(Server.MapPath("~\App_Data\Uploads") & "\" & System.IO.Path.GetFileName(hpf.FileName))
    GravarArquivoBD(hpf.FileName)
    Page.ClientScript.RegisterClientScriptBlock(Page.[GetType](), "Sucesso", "alert('Upload efetuado com sucesso')", True)
    Else
    Page.ClientScript.RegisterClientScriptBlock(Page.[GetType](), "Erro", "alert('Utilize somente arquivos PDF. Sua tentativa foi abortada pelo sistema.')", True)
    End If

    Catch ex As Exception
    Page.ClientScript.RegisterClientScriptBlock(Page.[GetType](), "Erro", "alert('" + ex.Message & "')", True)
    End Try

    End Sub

     

    Sub GravarArquivoBD(ByVal nomeArquivo As String)
        Dim strSql As New StringBuilder()
        strSql.Append(" INSERT INTO ARQUIVO VALUES (SEQ_ARQUIVO.NEXTVAL,'")
        strSql.Append(nomeArquivo)
        strSql.Append("','")
        strSql.Append(nomeArquivo)
        strSql.Append("')")
        SubSonic.DataService.ExecuteQuery(New SubSonic.QueryCommand(strSql.ToString, "Ementario"))
    
     End Sub
    
    

    Estou usando método GravarArquivoBD() para inserir o caminho do arquivo no banco.

    Ja fiz alguns debugs, e não sei por qual motivo, ele está duplicando o insert. Insere sempre 2 linhas no banco. Como se executasse duas vezes o método ou o evento que chama o Sub Envio.

    Alguem pode me ajudar?

    Grato!

     


    MCP
    quarta-feira, 1 de setembro de 2010 19:41

Todas as Respostas

  • Alysson,

     

    você poderia mandar o código do Button1_Click  e o Page_Load da página?

     

    Atenciosamente,

     

    Vinícius Melo Juraszek

    quarta-feira, 1 de setembro de 2010 22:39
  • Vinícius, o Page_Load não tem nada, e o Button1_Click chama o método Envio()
    MCP
    quinta-feira, 2 de setembro de 2010 11:18
  • Alysson,

     

    eu te pedi isso porque se você estiver utilizando a diretiva <%@ Page Language="vb" AutoEventWireup="false", você necessita colocar o Handles no seu

    Button1_Click(ByVal Sender As System.Object, ByVal e As System.EventArgs) _

    Handles Button1.Click

     

    do contrário, ou seja, se a diretiva for:

    <%@ Page Language="vb" AutoEventWireup="true", você necessita tirar o Handles

    deixando seu código só com isso:

    Button1_Click(ByVal Sender As System.Object, ByVal e As System.EventArgs)

     

    Provavelmente é por isso que a inserção está ocorrendo 2 vezes.

     

    Para maiores esclarecimento veja:

     

    http://support.microsoft.com/kb/317690/pt-br

     

    Atenciosamente,

     

    Vinícius Melo Juraszek

     

    Por favor, marque como resposta se for útil.

     

    quinta-feira, 2 de setembro de 2010 11:55