QFile可以把自己的Parent设置成QHttpMultiPart,今天真是开了眼界了~

SetParent函数是QObject,并不仅仅局限于GUI对象,这点和Delphi不一样。如此一来,以后可以给QNetworkAccessManager,QCoreApplication等等,都是如此,更不用说QTcpSocket,QTcpServer 。

QHttpMultiPart *multiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType);
    QHttpPart imagePart;
    //imagePart.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("text/plain"));
    imagePart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"file\"; filename=\"version.txt\""));/* version.tkt is the name on my Disk of the file that I want to upload */ 

    QHttpPart textPart;
    textPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"name\""));
    textPart.setBody("toto");/* toto is the name I give to my file in the server */

    QString apkLocation = apktextEdit->text();
    QFile *file = new QFile(apkLocation);
    file->open(QIODevice::ReadOnly);
    imagePart.setBodyDevice(file);
    file->setParent(multiPart); // we cannot delete the file now, so delete it with the multiPart

    multiPart->append(textPart);
    multiPart->append(imagePart);

    QUrl url("http://MyUrl.com");
    QNetworkRequest request(url);

    QNetworkAccessManager *networkManager= new QNetworkAccessManager;
    reply = networkManager->post(request, multiPart);
    multiPart->setParent(reply); // delete the multiPart with the reply

     connect(reply, SIGNAL(finished()),
              this, SLOT  (uploadDone()));

     connect(reply, SIGNAL(uploadProgress(qint64, qint64)),
              this, SLOT  (uploadProgress(qint64, qint64)));
}

https://stackoverflow.com/questions/38179706/uploading-a-file-in-multipart-form-data-in-qt5

时间: 2024-10-10 10:38:50

QFile可以把自己的Parent设置成QHttpMultiPart,今天真是开了眼界了~的相关文章

将activity设置成dialog

做法有两种 方法1. 1.在AndroidManifest.xml文件当中设置当前activity的一个属性(系统自带的属性):android:theme="@android:style/Theme.Dialog" 方法2. 1.在styles.xml文件中可以新建一如下的style: <style name="Theme.FloatActivity" parent="android:style/Theme.Dialog"><!

C#项目打包后安装的桌面快捷方式图标怎么设置成自己想要的图标

#项目打包后安装的桌面快捷方式图标怎么设置成自己想要的图标 2012-08-25 09:11匿名 | 浏览 3286 次 C#编程 C#项目用vs2005自带的工具打包后安装的桌面快捷方式图标怎么设置成自己想要的图标,就想QQ安装之后在桌面的快捷方式一样 2012-08-25 09:21网友采纳 在创建快捷方式的时候是可以指定图标的啊.当然你最好把那图标文件(扩展名是ico)放在打包的文件夹中,不然你是不能指定的.

将Win7笔记本设置成WiFi热点(无线路由器)

查看是否能启动WiFi网卡: S1:运行cmd命令,打开命令提示符窗口(以管理员身份运行). S2:在命令行输入:netsh wlan show drivers. 若"支持的承载网络"后为"是",则可以启用虚拟wifi网卡:"否"则不可以. 启用虚拟WiFi网卡: S1:在命令行中输入:netsh wlan set hostednetwork mode=allow ssid=用户名key=密码(mode:是否启用虚拟WiFi网卡,allow为启用

eclipse 背景色调整,设置成护眼色(豆沙绿)

eclipse 背景色调整--设置成护眼色 第一步: windows->peferences->General->Editors->Text EditorAppearance color options: 选择Background color,去掉System default  点击color框,进入颜色设置窗口. 第二步: 将色调,饱和度,亮度调整为85, 123, 205(或者 85; 90; 205)点击添加到自定义颜色,点击确定,回到主界面后,点击应用即可

powerdesigner中把用例关系线设置成直线

powerdesigner中默认参与者与用例之间的关系线是折线,如图: 如果想设置成直线显示,如下图: 则需要做设置: Tools-->Display Preferences 选择最后一项 3. 选择Format 4. 点"modify",选corners中的最后一项,如图: 就ok了. 不过不知道是不是我这个版本的问题(16.5),设置完后原来的线会显示成弯线,要把原来的关系线删除掉再重新建立一次关系才会显示直线.

view设置成圆角

有时候我们需要把图片.textview等view设置成圆角: 需要Core Graphics框架 头文件: #import <QuartzCore/QuartzCore.h> code: view.layer.borderWidth = 1; view.layer.cornerRadius = 6; view.layer.masksToBounds = YES; view设置成圆角,布布扣,bubuko.com

Android入门--实现选择并编辑图片设置成头像

在很多时候需要更换头像或者选择图片,所以这里总结下实现选择并编辑图片然后设置成头像的方法,下面开始: 整体结构如下:  创建项目,命名为ChooseImage_test 创建完成,在drawable-hdip文件夹中添加一张默认头像图片,用于在用户选择头像之前显示或者当用户未选择头像时做默认头像:  创建布局文件 这里为了贴合实际,整个页面就只有一个ImageView,当然现在是矩形的ImageView显示头像,后面会结合设置圆形头像的功能实现圆形头像选择功能 <RelativeLayout x

桌面上嵌入窗口(桌面日历)原理探索(将该窗口的Owner设置成桌面的Shell 窗口,可使用SetWindowLong更改窗口的GWL_HWNDPARENT,还要使用SetWindowPos设置Z-Order)

今天在QQ群里有人问怎样实现将自己的窗口嵌入桌面,让它和桌面融为一体,就像很多桌面日历软件那样. 我当时想到的就是建立一个Child  Window,将他的父窗口设置成桌面Shell窗口就可以了.但是后来想想觉得不对,因为很多桌面日历窗口都有半透明和阴影效果,明显是用Layered Window实现的,而大家知道Layered Window一定要用Pop Up Window才能实现的. 那么如何用Pop up Window实现这种效果呢? 这里关键的一点就是要将该窗口的Owner设置成桌面的Sh

Linux的/etc/inittab文件中init级别设置成6(重启)或者不支持级别的解决方法

如果不小心将/etc/inittab文件中的init级别设置成6(重启)或者不支持级别,系统就不能正常启动.本博客讲解如何通过Grub来解决这个问题. 1. 在Linux启动过程中,按Esc键进入Grub界面 2. 按e修改当前Linux系统的配置 3. 选择第二行,按e键,并按如下步骤执行 1)在出现的命令行后加1(单用户模式): 2)按Enter键接收操作并后退到当前Linux配置页面: 3)按b重启Linux. 4. 重启后进入Linux系统,修改/etc/inittab文件.将init级