Qt Forum

    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Unsolved

    Update: Forum Guidelines & Code of Conduct

    Solved Armazenar arquivos .PDF no MySQL

    Portuguese
    2
    5
    2683
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • T
      Ticianelli last edited by

      Preciso de uma aplicação que salve arquivos do tipo .pdf em um banco de dados. Criei um campo no banco de dados do tipo BLOB para receber este arquivo, mas não sei como vou passar ele para o banco. Pensei em converte-lo para ByteArray e armazenar no banco, e quando precisar dele faço a conversão de volta para o formato .pdf. Este é um bom caminho? Como posso fazer essa conversão? Existem meios melhores de fazer isso?

      Grato.
      Aguardo resposta.

      1 Reply Last reply Reply Quote 0
      • T
        TioRoy last edited by

        Acredito que o caminho seja esse mesmo.

        Um código mais ou menos assim:

        void test() {
        /* .... */
        QByteArray byte;
            QFile file(filename);
            if(file.open(QIODevice::ReadOnly))
            {
                byte = file.readAll();
                file.close();
            }
        }
        

        e depois

        query.bindValue(":image", byte, QSql::In | QSql::Binary);
        

        Resolva. Mas tome cuidado com o tamanho do arquivo: o readAll() vai colocar o arquivo inteiro na memória.

        T 1 Reply Last reply Reply Quote 0
        • T
          Ticianelli @TioRoy last edited by

          @TioRoy said:

          Entendi, desta forma o arquivo é transformado em bytearray e depois armazenado no banco de dados. E para a recuperação desse arquivo? Como converto o bytearray que vou pegar do banco de dados e transformo em .pdf?

          1 Reply Last reply Reply Quote 0
          • T
            TioRoy last edited by

            Você só precisa recuperar o bytearray e gravar o arquivo com extensão .pdf. Mais ou menos assim:

            if (query.exec( "SELECT blobPDF  from table" )) {
            //.....
            QByteArray outByteArray = query.value( 0 ).toByteArray();
            //...
            }
            
            T 1 Reply Last reply Reply Quote 0
            • T
              Ticianelli @TioRoy last edited by

              @TioRoy

              Certo, consegui fazer funcionar aqui =), minha maior duvida era como conseguir pegar um bytearray e salva-lo em um arquivo pdf, isso resolveu meu problema:

              if(arquivo.open(QIODevice::WriteOnly)){
                  arquivo.write(bytearray);
              }
              

              Não achava que algo tão simples fosse funcionar, mas enfim, funcionou. Agora é só fazer mais testes para confirmar que não vai dar problema.

              Obrigado pela ajuda.

              1 Reply Last reply Reply Quote 0
              • First post
                Last post