{
QByteArray RFCDate
= DayOfWeek
+ ", " + QDateTime::currentDateTime().
toString(Qt
::RFC2822Date).
toUtf8();
QByteArray StringToSign
= "PUT\\n\\n" + ContentType
+ "\\n" + RFCDate
+ "\\n" + "/" + S3Bucket
+ "/" + fileInfo.
fileName().
toUtf8();
QByteArray SignString
= QMessageAuthenticationCode
::hash(StringToSign, SecretKey, QCryptographicHash
::Sha1).
toBase64();
QNetworkAccessManager * networkAccessManager = new QNetworkAccessManager(this);
QNetworkRequest request
(QUrl("https://" + S3Bucket
+ ".s3." + S3region
+ ".amazonaws.com/" + fileInfo.
fileName()));
request.setHeader(QNetworkRequest::ContentTypeHeader, ContentType);
request.setHeader(QNetworkRequest::ContentLengthHeader, fileInfo.size());
request.setRawHeader("Host", S3Bucket + ".s3." + S3region + ".amazonaws.com");
request.setRawHeader("Date", RFCDate);
request.setRawHeader("Authorization", "AWS " + AccessKey + ":" + SignString);
m_reply = networkAccessManager->put(request, fileData);
connect(m_reply, SIGNAL(finished()), this, SLOT(mySlot()));
}
QFile * fileData = new QFile(path, this);
if (fileData->open(QIODevice::ReadOnly))
{
QFileInfo fileInfo(fileData->fileName());
QByteArray AccessKey = "SOMEACCESKEY";
QByteArray SecretKey = "SOMESECRETKEY";
QByteArray DayOfWeek = QDateTime::currentDateTime().date().toString("ddd").toUtf8();
QByteArray RFCDate = DayOfWeek + ", " + QDateTime::currentDateTime().toString(Qt::RFC2822Date).toUtf8();
QByteArray S3Bucket = "somes3bucket";
QByteArray S3region = "us-east-1";
QByteArray ContentType = "image/jpeg";
QByteArray StringToSign = "PUT\\n\\n" + ContentType + "\\n" + RFCDate + "\\n" + "/" + S3Bucket + "/" + fileInfo.fileName().toUtf8();
QByteArray SignString = QMessageAuthenticationCode::hash(StringToSign, SecretKey, QCryptographicHash::Sha1).toBase64();
QNetworkAccessManager * networkAccessManager = new QNetworkAccessManager(this);
QNetworkRequest request(QUrl("https://" + S3Bucket + ".s3." + S3region + ".amazonaws.com/" + fileInfo.fileName()));
request.setHeader(QNetworkRequest::ContentTypeHeader, ContentType);
request.setHeader(QNetworkRequest::ContentLengthHeader, fileInfo.size());
request.setRawHeader("Host", S3Bucket + ".s3." + S3region + ".amazonaws.com");
request.setRawHeader("Date", RFCDate);
request.setRawHeader("Authorization", "AWS " + AccessKey + ":" + SignString);
m_reply = networkAccessManager->put(request, fileData);
connect(m_reply, SIGNAL(finished()), this, SLOT(mySlot()));
}
To copy to clipboard, switch view to plain text mode
Bookmarks