Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

PDF in der Datenbank in QtCreator 5.14. speichern bzw. anzeigen lassen ?



  • Die Speicherung der PDF/Text/Word Datei funktioniert, wird unten im Code angezeigt. Die Speichergröße in der Datenbank abgespeichert. Wie kann ich diese wieder in QT anzeigen lassen bzw. abspeichern, sodass ich sicherstellen kann.. das diese Datei nicht verloren gegangen ist. Ich brauche die Datei sowieso für die Weiterverwendung in QT.

    void Datenbank::saveFile(QString fileName_)
    {
        QSqlQuery query;
        QFile file(fileName_);
        if(!file.open(QIODevice::ReadOnly)) return;
        QByteArray inByteArray = file.readAll();
        query.prepare("INSERT INTO db.uploadtest (dbfilename, dbfiledata) VALUES (:fileName_, :fileData)" );
        query.bindValue( ":fileName_", fileName_ );
        query.bindValue( ":fileData", inByteArray);
        if( !query.exec() )
            qDebug() << "Fehler beim Einfuegen der Datei in die Datenbank:\n" << query.lastError();
        else
            qDebug() << "Datei erfolgreich hochgeladen\n";
    }
    

  • Lifetime Qt Champion

    @projectbavaria Du kannst die Datei aus der DB lesen (SELECT) und als Datei im Dateisystem speichern.



  • @jsulm haben wir versucht mit QFile aber es funktioniert nicht, Qt gibt meldung raus das es keine file gibt bzw. empty


  • Lifetime Qt Champion

    @projectbavaria Ohne Code wird keiner helfen können...



  • @jsulm

    //versuchen die datei(PDF) anzeigen zu lassen in QT und holt sich die datei über die datenbank
    QSqlQuery query;
        if( !query.exec( "SELECT dbfiledata FROM db.uploadtest WHERE dbfileid = '4'" ))
            qDebug() << "Fehler beim Laden der Datei aus der Datenbank:\n" << query.lastError();
        qDebug() << query.first();
        QByteArray outByteArray = query.value( 0 ).toByteArray();
        QString DataAsString = QTextCodec::codecForMib(1015)->toUnicode(outByteArray);
        //file.append(outByteArray);
        qDebug() << "in File geladen\n";
        qDebug() << DataAsString;
    
        //Datei anzeigen
        QLabel label;
        label.setText(DataAsString);
        label.show();
    

  • Lifetime Qt Champion

    @projectbavaria In diesem Code wird nirgendwo irgendwas in irgendeine Datei geschrieben...



  • @jsulm die datei wird doch im QString DataAsString reingeschrieben? oder lieg ich falsch? ich hab es auch mit einem QtDocument gemacht aber es lässt sich nicht anzeigen. In der Datenbank wird es abgespeichert und man sieht auch das es mit der richtigen Größe abgespeichert wird. Wie kann man es sonst konvertieren, wenn man nicht QString DataAsString benutzt?


  • Lifetime Qt Champion

    @projectbavaria Ging es nicht darum die gelesenen Daten in eine Datei reinzuschreiben? Wenn nicht, dann sollte auch nicht von einer Datei die Rede sein, da es sonst nur verwirrt.
    Also, was ist das: "haben wir versucht mit QFile aber es funktioniert nicht, Qt gibt meldung raus das es keine file gibt bzw. empty"?
    Wo wird in dem Code irgendwas mit QFile gemacht?

    Wie groß ist outByteArray und was ist drin?