参考网址:

http://blog.csdn.net/cdnight/article/details/23658715

http://www.tuicool.com/articles/AzeaUz

http://m.blog.csdn.net/blog/carecool/17881039

自己的代码:

  1. ui->webView->page()->setForwardUnsupportedContent(true);
  1.  
  1. connect( ui->webView->page(),SIGNAL(unsupportedContent(QNetworkReply*)),
  1. this,SLOT(unsupportedContent(QNetworkReply*)) );
  1. void MainWindow::unsupportedContent(QNetworkReply *reply)
  1. {
  1.  
  1. //save to a dir
  1. QString strDesktop = QStandardPaths::writableLocation(QStandardPaths::DesktopLocation);
  1. QString strDir = QFileDialog::getExistingDirectory(this, "另存为",
  1. strDesktop,
  1. QFileDialog::ShowDirsOnly
  1. | QFileDialog::DontResolveSymlinks);
  1. if(strDir=="")
  1. {
  1. return;
  1. }
  1.  
  1.  
  1. QString fileName;
  1. fileName.clear();
  1.   //url转码
  1. QUrl copy(reply->url());
  1. copy.setQuery(copy.query(QUrl::FullyDecoded), QUrl::TolerantMode);
  1. qDebug()<<copy.toString();
  1. QStringList urlList = copy.toString().split('&');
  1. foreach (QString str, urlList)
  1. {
  1. if(str.contains("downloadName",Qt::CaseSensitive))
  1. {
  1. QStringList downList = str.split('=');
  1. fileName = downList.at(1);
  1. m_pFile = new QFile(strDir + "\\" + fileName);
  1. m_pFile->open(QIODevice::WriteOnly|QIODevice::Truncate);
  1. }
  1. }
  1.  
  1. QNetworkRequest request;
  1. request.setUrl(reply->url());
  1.  
  1. m_pManager = new QNetworkAccessManager(this);
  1. m_pReply = m_pManager->get(request);
  1. connect(m_pManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinished(QNetworkReply*)));//下载结束
  1. connect(m_pReply, SIGNAL(downloadProgress(qint64,qint64)), this, SLOT( onDownloadProgress(qint64 ,qint64 )));//更新进度条
  1. connect(m_pReply, SIGNAL(readyRead()), this, SLOT(on_readyRead()));//收到数据就往文件里写
    }
  1. void replyFinished(QNetworkReply* _reply)
  1. {
  1.  
  1. //无错误返回
  1. if(_reply->error() == QNetworkReply::NoError)
  1. {
        //关闭文件
  1. }
  1. else
  1. {
  1. //处理错误
  1. }
    }
  2.  
  1. void on_readyRead()
  1. {
  1. m_pFile->write(m_pReply->readAll());//向文件写入数据
  1. }
  1.  
  1. m_pReply->abort();//取消下载
  1.  

QWebView下载文件,QUrl中解析文件名的更多相关文章

  1. IE Edge 下载文件的时候,文件名不能有windows不支持的特殊字符

    IE Edge 下载文件的时候,文件名不能有windows不支持的特殊字符,比如:等. 马了个批的,其他浏览器包括IE就可以自动转换,比如:会自动变为_.

  2. 火狐浏览器下载文件中文乱码,文件名中的空格变加号("+")的问题

    解决一下问题: 1.火狐浏览器下载文件,中文变乱码 2.IE浏览器下载文件,丢失文件扩展名或强制扩展名为".txt" 3.浏览器下载文件,文件名中的空格变成加号("+&q ...

  3. python 读取mysql存储的文件路径下载文件,内容解析,上传七牛云,内容入es

    #!/usr/bin/env python # -*- coding: utf-8 -*- import ConfigParser import json import os import re fr ...

  4. php强制下载文件并显示原始文件名

    原来一直没有接触过,这几天一直在玩儿文件上传下载的东西.今天又遇到一个坑. 描述:文件上传至服务器后,如果是rar或则其他的非浏览器直接识别的格式,用户点击链接了后是可以直接就被下载下来的.那么如果上 ...

  5. bat文件调用cmd命令批量提取文件夹中的文件名(批量修改文件扩展名)

    前言: 在平时的工作中,经常需要批量统计文件和数据,如果逐个统计的话太耗时,而且容易出错那么有没有什么快速的方法呢,这里给大家介绍一种简单高效的方法. 方法: 1.打开CMD命令: 按下 Ctrl+R ...

  6. springboot项目下载文件功能中-切面-导致的下载文件失败的bug

    背景:使用spring提供的 ResponseEntity 和Resource结合,实现的下载文件功能 bug:Resource已经加载到了文件, 并且通过 ResponseEntity 构建了响应, ...

  7. post请求下载文件,获取Content-Disposition文件名

    1.post下载文件代码,doload方法 import request from "../../src/utils/request"; import { API } from & ...

  8. 如何使用命令将文件夹中的文件名(包括路径)写入到txt文件中

    在cmd中使用 cd /d 路径,进入当前文件夹中 使用 dir /s /b > 0.txt 如图:

  9. Servlet 下载文件及支持中文文件名

    Sevlet 下载pdf文件 支持中文文件名 package html2pdf.controller; import java.io.File; import java.io.FileInputStr ...

随机推荐

  1. Android_adb详解

    adb定义:adb(android debug bridge)是android系统中的一种命令行工具,通过它可以和android设备或模拟器通信. adb工具位置: <path-to-sdk&g ...

  2. Java中的get()和set()方法

    对于JAVA初学者来说,set和get这两个方法似乎已经很熟悉了,这两个方法是JAVA变成中的基本用法,也是出现频率相当高的两个方法. 如果你对于这两个方法还有困惑甚至完全不知道这两个方法是做什么的, ...

  3. shell 日期加减

    shell 日期加减运算   比如今日是2012-04-22 $ date -d "+1 day" +%Y-%m-%d 2012-04-23   $ date -d "- ...

  4. tp框架支付宝手机网页支付

    开发环境:linux+php+mysql 密钥生成: 1.genrsa -out rsa_private_key.pem 1024 生成商户私钥,因在php环境,一定要保持原始状态,不得修改.rsa_ ...

  5. Ubuntu 下配置ftp服务端

    安装sudo apt-get install pure-ftpdsudo netstat –ano | grep “21”查看21端口是否已开启.完成安装后,就可以用Ubuntu系统的用户名和密码登陆 ...

  6. Linux 线程与进程,以及通信

    http://blog.chinaunix.net/uid-25324849-id-3110075.html 部分转自:http://blog.chinaunix.net/uid-20620288-i ...

  7. Java基础知识点

    以下10点为JAVA 基础知识,后面将足以总结和完善以备面试 数据类型 (包装类,字符串,数组) 异常处理 Java IO和NIO 数据结构 (集合和容器 ) 多线程(并发) 网络通信(协议) 面向对 ...

  8. ubuntu查看内存占用和查看cpu使用情况的简单方法(ubuntu内存管理)

    单独查看内存使用情况的命令:free -m查看内存及cpu使用情况的命令:top也可以安装htop工具,这样更直观,安装命令如下:sudo apt-get install htop安装完后,直接输入命 ...

  9. AIM Tech Round 3 (Div. 2) B

    Description Vasya takes part in the orienteering competition. There are n checkpoints located along ...

  10. js监控窗口高度和宽度

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/T ...