void DriveManager::handleUploadRequestFinished () { QNetworkReply *reply = qobject_cast<QNetworkReply*> (sender ()); if (!reply) return; reply->deleteLater (); QString path = Reply2FilePath_.take (reply); const int code = reply-> attribute (QNetworkRequest::HttpStatusCodeAttribute).toInt (); if (code != 200) { qWarning () << Q_FUNC_INFO << "upload initiating failed with code:" << code; return; } emit uploadStatusChanged (tr ("Uploading..."), path); QFile *file = new QFile (path); if (!file->open (QIODevice::ReadOnly)) { qWarning () << Q_FUNC_INFO << "unable to open file: " << file->errorString (); return; } QUrl url (reply->rawHeader ("Location")); QNetworkRequest request (url); #ifdef HAVE_MAGIC request.setHeader (QNetworkRequest::ContentTypeHeader, magic_file (Magic_, path.toUtf8 ())); #endif request.setHeader (QNetworkRequest::ContentLengthHeader, QString::number (QFileInfo (path).size ()).toUtf8 ()); QNetworkReply *uploadReply = Core::Instance ().GetProxy ()-> GetNetworkAccessManager ()->put (request, file); file->setParent (uploadReply); Reply2FilePath_ [uploadReply] = path; connect (uploadReply, SIGNAL (finished ()), this, SLOT (handleUploadFinished ())); connect (uploadReply, SIGNAL (error (QNetworkReply::NetworkError)), this, SLOT (handleUploadError (QNetworkReply::NetworkError))); connect (uploadReply, SIGNAL (uploadProgress (qint64, qint64)), this, SLOT (handleUploadProgress (qint64, qint64))); }
void FileTransfersPage::setUploadNetworkReply(QNetworkReply *networkReply) { uploadNetworkReply = networkReply; connect( uploadNetworkReply, SIGNAL(uploadProgress(qint64, qint64)), SLOT(handleUploadProgress(qint64, qint64)) ); }
void FotoBilderAccount::UploadOneImage (const QByteArray& id, const UploadItem& item, const QString& challenge) { QFile file (item.FilePath_); if (!file.open (QIODevice::ReadOnly)) return; auto content = file.readAll (); QByteArray md5 = QCryptographicHash::hash (content, QCryptographicHash::Md5); file.close (); auto reply = Proxy_->GetNetworkAccessManager ()-> put (CreateRequest (Util::MakeMap<QByteArray, QByteArray> ({ { "X-FB-User", Login_.toUtf8 () }, { "X-FB-Mode", "UploadPic" }, { "X-FB-Auth", ("crp:" + challenge + ":" + GetHashedChallenge (GetPassword (), challenge)) .toUtf8 () }, { "X-FB-AuthVerifier", "md5=" + md5 + "&mode=UploadPic" }, { "X-FB-UploadPic.ImageData", QDateTime::currentDateTime () .toString (Qt::ISODate).toUtf8 () }, { "X-FB-UploadPic.MD5", md5 }, //TODO access to images { "X-FB-UploadPic.PicSec", "255" }, { "X-FB-UploadPic.Meta.Filename", QFileInfo (item.FilePath_) .fileName ().toUtf8 () }, { "X-FB-UploadPic.Meta.Title", QFileInfo (item.FilePath_) .fileName ().toUtf8 () }, { "X-FB-UploadPic.Meta.Description", item.Description_.toUtf8 () }, { "X-FB-UploadPic.Gallery._size", "1" }, { "X-FB-UploadPic.Gallery.0.GalID", id }, { "X-FB-UploadPic.ImageSize", QString::number (QFileInfo (item.FilePath_) .size ()).toUtf8 () } })), content); Reply2UploadItem_ [reply] = item; connect (reply, SIGNAL (finished ()), this, SLOT (handleImageUploaded ())); connect (reply, SIGNAL (uploadProgress (qint64, qint64)), this, SLOT (handleUploadProgress (qint64, qint64))); connect (reply, SIGNAL (error (QNetworkReply::NetworkError)), this, SLOT (handleNetworkError (QNetworkReply::NetworkError))); }
BitcheesePending::BitcheesePending (const QString& filename, const ICoreProxy_ptr& proxy, QObject *parent) : PendingUploadBase { filename, proxy, parent } { const auto nam = proxy->GetNetworkAccessManager (); QNetworkRequest req { QUrl { "http://dump.bitcheese.net/upload-file" } }; req.setRawHeader ("Referer", "http://dump.bitcheese.net/"); const auto reply = nam->post (req, MakeStandardMultipart ()); connect (reply, SIGNAL (finished ()), this, SLOT (handleFinished ())); connect (reply, SIGNAL (error (QNetworkReply::NetworkError)), this, SLOT (handleError ())); connect (reply, SIGNAL (uploadProgress (qint64, qint64)), this, SLOT (handleUploadProgress (qint64, qint64))); }