#include "SarUploadDialog.h" #include "saruploaddialog.h" #include #include #include #include #include #include #include #include #include #include #include #include #include SarUploadDialog::SarUploadDialog(QWidget* parent) : QDialog(parent), networkManager(new QNetworkAccessManager(this)) { setupUi(); initConnections(); } SarUploadDialog::~SarUploadDialog() { // 自动释放Qt对象 } void SarUploadDialog::setupUi() { QVBoxLayout* mainLayout = new QVBoxLayout(this); // 参数组 QGroupBox* groupBox = new QGroupBox("Upload Parameters ( * required)"); QFormLayout* formLayout = new QFormLayout; // dataSource字段 leFilePath = new QLineEdit; btnBrowse = new QPushButton("Browse..."); QHBoxLayout* fileLayout = new QHBoxLayout; fileLayout->addWidget(leFilePath); fileLayout->addWidget(btnBrowse); formLayout->addRow("dataSource*:", fileLayout); // 其他字段初始化... groupBox->setLayout(formLayout); mainLayout->addWidget(groupBox); // 按钮组 QHBoxLayout* buttonLayout = new QHBoxLayout; btnExecute = new QPushButton("Execute"); btnClear = new QPushButton("Clear"); btnCancel = new QPushButton("Cancel"); buttonLayout->addWidget(btnExecute); buttonLayout->addWidget(btnClear); buttonLayout->addWidget(btnCancel); mainLayout->addLayout(buttonLayout); } void SarUploadDialog::initConnections() { connect(btnBrowse, &QPushButton::clicked, this, &SarUploadDialog::onBrowseClicked); connect(btnExecute, &QPushButton::clicked, this, &SarUploadDialog::onExecuteClicked); connect(btnClear, &QPushButton::clicked, [this]() { leFilePath->clear(); // 清空其他字段... }); connect(btnCancel, &QPushButton::clicked, this, &QDialog::reject); } // 文件浏览槽函数 void SarUploadDialog::onBrowseClicked() { QString file = QFileDialog::getOpenFileName(this, "Select SAR File"); if (!file.isEmpty()) leFilePath->setText(file); } // 执行上传 void SarUploadDialog::onExecuteClicked() { if (!validateInputs()) return; QUrlQuery query; query.addQueryItem("dataType", leDataType->text()); query.addQueryItem("dataname", leDataname->text()); QHttpMultiPart* multiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType); // 文件部分 QHttpPart filePart; filePart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"dataSource\"; filename=\"" + QFileInfo(leFilePath->text()).fileName() + "\"")); QFile* file = new QFile(leFilePath->text()); file->open(QIODevice::ReadOnly); filePart.setBodyDevice(file); multiPart->append(filePart); QUrl url("http://your-api-domain/api/uploadOpticalSar"); url.setQuery(query); QNetworkRequest request(url); request.setRawHeader("Accept", "application/json"); QNetworkReply* reply = networkManager->put(request, multiPart); connect(reply, &QNetworkReply::finished, [=]() { handleResponse(reply); multiPart->deleteLater(); }); } // 响应处理 void SarUploadDialog::handleResponse(QNetworkReply* reply) { if (reply->error() == QNetworkReply::NoError) { QMessageBox::information(this, "Success", "Upload completed successfully"); } else { QMessageBox::critical(this, "Error", QString("Error %1: %2").arg(reply->error()).arg(reply->errorString())); } reply->deleteLater(); } // 输入验证 bool SarUploadDialog::validateInputs() { if (leFilePath->text().isEmpty()) { QMessageBox::warning(this, "Warning", "dataSource is required!"); return false; } // 其他验证逻辑... return true; }