diff --git a/src/kio_gdrive.h b/src/kio_gdrive.h --- a/src/kio_gdrive.h +++ b/src/kio_gdrive.h @@ -96,7 +96,7 @@ bool putUpdate(const QUrl &url); bool putCreate(const QUrl &url); - bool readPutData(QTemporaryFile &tmpFile); + bool readPutData(QTemporaryFile &tmpFile, KGAPI2::Drive::FilePtr &file); /** * Executes a KGAPI2::Job in an event loop, retrying the job until success or failure. diff --git a/src/kio_gdrive.cpp b/src/kio_gdrive.cpp --- a/src/kio_gdrive.cpp +++ b/src/kio_gdrive.cpp @@ -51,6 +51,7 @@ #include #include +#include using namespace KGAPI2; using namespace Drive; @@ -663,7 +664,7 @@ finished(); } -bool KIOGDrive::readPutData(QTemporaryFile &tempFile) +bool KIOGDrive::readPutData(QTemporaryFile &tempFile, FilePtr &fileMetaData) { // TODO: Instead of using a temp file, upload directly the raw data (requires // support in LibKGAPI) @@ -691,6 +692,10 @@ } } } while (result > 0); + + const QMimeType mime = QMimeDatabase().mimeTypeForFileNameAndData(fileMetaData->title(), &tempFile); + fileMetaData->setMimeType(mime.name()); + tempFile.close(); if (result == -1) { @@ -743,9 +748,10 @@ return false; } - const FilePtr file = objects[0].dynamicCast(); + FilePtr file = objects[0].dynamicCast(); + QTemporaryFile tmpFile; - if (!readPutData(tmpFile)) { + if (!readPutData(tmpFile, file)) { error(KIO::ERR_CANNOT_READ, url.path()); return false; } @@ -792,7 +798,7 @@ */ QTemporaryFile tmpFile; - if (!readPutData(tmpFile)) { + if (!readPutData(tmpFile, file)) { error(KIO::ERR_CANNOT_READ, url.path()); return false; }