Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Portuguese
  4. Armazenar arquivos .PDF no MySQL
QtWS25 Last Chance

Armazenar arquivos .PDF no MySQL

Scheduled Pinned Locked Moved Solved Portuguese
5 Posts 2 Posters 3.0k Views
  • 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 Offline
    T Offline
    Ticianelli
    wrote on last edited by
    #1

    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
    0
    • T Offline
      T Offline
      TioRoy
      wrote on last edited by
      #2

      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
      0
      • T TioRoy

        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 Offline
        T Offline
        Ticianelli
        wrote on last edited by
        #3

        @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
        0
        • T Offline
          T Offline
          TioRoy
          wrote on last edited by
          #4

          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
          0
          • T TioRoy

            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 Offline
            T Offline
            Ticianelli
            wrote on last edited by
            #5

            @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
            0

            • Login

            • Login or register to search.
            • First post
              Last post
            0
            • Categories
            • Recent
            • Tags
            • Popular
            • Users
            • Groups
            • Search
            • Get Qt Extensions
            • Unsolved