Qt上传图片到http服务器

    QHttpMultiPart *multiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType);
    QHttpPart imagePart;
    imagePart.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("image/jpeg"));

    magePart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"picFile\"; filename=\"1.jpg\""));


    QFile *file = new QFile("1.jpg");
    file->open(QIODevice::ReadOnly);
    imagePart.setBodyDevice(file);
    imagePart.setBodyDevice(file);
    file->setParent(multiPart);
    multiPart->append(imagePart);

    QNetworkRequest request(QUrl("http://192.168.11.200:8080/epks/api/visitor_pic_upload"));
    reply = manager->post(request, multiPart);
    multiPart->setParent(reply);
Qt中处理HTTP上传GIF图片资源并生成动态GIF显示,你可以按照以下步骤操作: 1. **准备环境**: - 首先,确保已经安装了QHttpNetwork模块(Qt 5版本自带)用于网络请求。 - 安装必要的库,比如`libqimageblitz`,它提供了处理图像的功能。 2. **连接到服务器**: 使用`QNetworkAccessManager`发起HTTP POST请求,并设置头信息以指定Content-Type为`multipart/form-data`,因为GIF文件通常作为表单数据上传。 ```cpp QNetworkRequest request; request.setUrl(QUrl("http://example.com/upload")); QByteArray boundary = "boundary" + QByteArray::number(QDateTime::currentMSecsSinceEpoch()); QHttpMultiPart formData("form-data"); // 添加GIF文件部分 QImage gifImage("path_to_your_gif_file.gif"); QByteArray imageData(gifImage.save("data:image/gif;base64,")); // Base64编码 formData.addPart(QHttpPart().setContentType(QStringLiteral("image/gif")).setBody(imageData)); QNetworkReply *reply = manager.post(request, formData); connect(reply, &QNetworkReply::finished, [reply]() { if (reply->error() == QNetworkReply::NoError) { qDebug() << "Upload successful"; } else { qDebug() << "Upload failed: " << reply->errorString(); } }); ``` 3. **接收响应**: 网络请求完成后,检查响应状态码,如果成功则继续下一步。 4. **生成并显示GIF**: 从服务器获取返回的信息,如果包含新生成的GIF地址,可以使用第三方库如`qgif`或者`QtMultimedia`加载并显示动态GIF。 ```cpp if (reply->header("Location").isEmpty()) { qWarning() << "No GIF URL received."; } else { QUrl generatedGifUrl(reply->header("Location").toString()); QImage newGif = QImage::fromData(QUrl(generatedGifUrl).readAll(), "image/gif"); QLabel *gifLabel = new QLabel(this); gifLabel->setPixmap(QPixmap::fromImage(newGif)); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值