none
Gravar imagem no arquivo MySQL RRS feed

  • Pergunta

  • Tenho um aplicativo WebForm com base de dados MySQL onde os cliente tem cadastro normal e também o respectivo logotipo.

    A rotina que estou usando retorna gravado com sucesso porém nada é colocado no arquivo.

    Já usei tres formatos de parâmetros e nenhum funcionou. Segue também na rotina os parâmetros que já usei sem resultado.

    Essa é minha rotina:

    Sou muito grato pela ajuda.

        Private Sub SalvaImagem(img As String)
            Dim connection As New MySqlConnection
            Dim command As New MySqlCommand
            Dim Logo As Image = Image.FromFile(img)
            Dim MySQL As String = "UPDATE empresa SET logotipo = @Imagem WHERE idEmpresa = " & IDEmpresa

            Try
                connection = Rotinas.Conectar
                command.Connection = connection
                connection.Open()
                command = New MySqlCommand(MySQL, connection)
                command.CommandText = MySQL

                'FORMATO DE PARÂMETRO 1
                'command.Parameters.Add(New MySqlParameter("@Imagem", MySqlDbType.MediumBlob)).Value = Tratar(img)

                'FORMATO DE PARÂMETRO 2
                Using Imagem As Image = Image.FromFile(img)
                    Using stream As New IO.MemoryStream
                        Imagem.Save(stream, Imaging.ImageFormat.Png)
                        command.Parameters.Add(New MySqlParameter("@Imagem", MySqlDbType.MediumBlob, img.Length, ParameterDirection.Input, False, 0, 0, Nothing, DataRowVersion.Current, stream.GetBuffer()))
                    End Using
                End Using

                'FORMATO DE PARÂMETRO 3
                'Using Imagem As Image = Image.FromFile(img)
                '    Using stream As New IO.MemoryStream
                '        Imagem.Save(stream, Imaging.ImageFormat.Png)
                '        command.Parameters.Add(New MySqlParameter("@Imagem", MySqlDbType.MediumBlob)).Value = stream.GetBuffer()
                '    End Using
                'End Using

                Dim qtdOK As Integer = command.ExecuteNonQuery()
                If qtdOK > 0 Then
                    StatusLabel.Text = "Logotipo carregado com sucesso."
                Else
                    StatusLabel.Text = "Não carregou o logotipo."
                End If

            Catch myerror As MySqlException
                MessageBox.Show("Database Error: " & myerror.Message, "Configura", MessageBoxButtons.OK, MessageBoxIcon.Information)
            Catch ex As Exception
                MessageBox.Show("Error: " & ex.Message, "Configura", MessageBoxButtons.OK, MessageBoxIcon.Information)
            Finally
                command.Parameters.Clear()
                connection.Close()
                command.Dispose()
                connection.Dispose()
            End Try
        End Sub


    quinta-feira, 26 de outubro de 2017 14:15

Respostas

Todas as Respostas

  • Qual o conteúdo do parâmetro img? É a imagem em base64? Caminho para a imagem no servidor?

    Juliano Nunes - http://linkedin.com/in/julianonunes

    Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.

    Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.

    quinta-feira, 26 de outubro de 2017 14:35
  • Olá Juliano, boa tarde. Obrigado pela sua atenção.

    A imagem é um Logo.png de 16k.

    A imagem está no computador do cliente, eu uso o FileUpload para localizar e pegar o endereço físico dela no cliente.

    Esse endereço físico é o parâmetro que a rotina  SalvaImagem(img As String) recebe e depois para para essa função:

        Function Tratar(ByVal img As String) As Byte()
            Dim fs As FileStream
            Dim br As BinaryReader
            fs = New FileStream(img, FileMode.Open, FileAccess.Read)
            br = New BinaryReader(fs)
            Return br.ReadBytes(CType(fs.Length, Integer))
            br.Close()
            fs.Close()

        End Function

    quinta-feira, 26 de outubro de 2017 17:09
  • Descobri. A base de dados foi gerada corrompida. Deletei a base e criei novamente.

    Todas os três formatos do meu exemplo executou e gravou perfeitamente.

    Obrigado.

    domingo, 29 de outubro de 2017 15:19