MCPcopy Create free account
hub / github.com/altairwei/WizNotePlus / uploadObject

Function uploadObject

src/sync/WizKMServer.cpp:1288–1397  ·  view source on GitHub ↗

* @brief 上传较大资源文件对象 * @param server * @param url * @param key * @param kbGuid * @param docGuid * @param objType * @param objId * @param data 待上传的数据 * @param isLast * @param res * @return */

Source from the content-addressed store, hash-verified

1286 * @return
1287 */
1288bool uploadObject(WizKMDatabaseServer& server, const QString& url, const QString& key, const QString& kbGuid, const QString& docGuid, const QString& objType, const QString& objId, const QByteArray& data, bool isLast, Json::Value& res)
1289{
1290 // 将数据分割成1M的块
1291 int partSize = 1024 * 1024; //1M
1292 int partCount = (data.length() + partSize - 1) / partSize;
1293 for (int i = 0; i < partCount; i++)
1294 {
1295 QHttpMultiPart *multiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType);
1296 //
1297 QHttpPart keyPart;
1298 keyPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"key\""));
1299 keyPart.setBody(key.toUtf8());
1300
1301 QHttpPart kbGuidPart;
1302 kbGuidPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"kbGuid\""));
1303 kbGuidPart.setBody(kbGuid.toUtf8());
1304
1305 QHttpPart docGuidPart;
1306 docGuidPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"docGuid\""));
1307 docGuidPart.setBody(docGuid.toUtf8());
1308
1309 QHttpPart objIdPart;
1310 objIdPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"objId\""));
1311 objIdPart.setBody(objId.toUtf8());
1312
1313 QHttpPart objTypePart;
1314 objTypePart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"objType\""));
1315 objTypePart.setBody(objType.toUtf8());
1316
1317 QHttpPart indexPart;
1318 indexPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"partIndex\""));
1319 indexPart.setBody(WizIntToStr(i).toUtf8());
1320
1321 QHttpPart countPart;
1322 countPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"partCount\""));
1323 countPart.setBody(WizIntToStr(partCount).toUtf8());
1324
1325 QHttpPart isLastPart;
1326 isLastPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"isLast\""));
1327 isLastPart.setBody(isLast ? "1" : "0");
1328
1329 QHttpPart filePart;
1330 QString filePartHeader = QString("form-data; name=\"data\"; filename=\"%1\"").arg(objId);
1331 filePart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant(filePartHeader));
1332 //
1333 int extra = 0;
1334 int partEnd = i * partSize + partSize;
1335 if (partEnd > data.length()) {
1336 extra = partEnd - data.length();
1337 }
1338 QByteArray partData = data.mid(i * partSize, partSize - extra);
1339 filePart.setBody(partData);
1340 // 组装HTTP请求
1341 multiPart->append(keyPart);
1342 multiPart->append(kbGuidPart);
1343 multiPart->append(docGuidPart);
1344 multiPart->append(objIdPart);
1345 multiPart->append(objTypePart);

Callers 2

document_postDataNewMethod · 0.85

Calls 11

WizIntToStrFunction · 0.85
lengthMethod · 0.80
postMethod · 0.80
setTimeoutWaitSecondsMethod · 0.80
errorMethod · 0.80
resultMethod · 0.80
setLastErrorMethod · 0.80
whatMethod · 0.80
QStringClass · 0.70
execMethod · 0.45
errorStringMethod · 0.45

Tested by

no test coverage detected