目前连接有 http://192.168.2.1:/app/test.pdf 和http://192.168.2.1:/Servlet?action=7&file=erc_y.raq&columns=0&srcType=file&reportParamsId=1012&cachedId=A_3&t_i_m_e=1448698461359 这两种,之前都是通过
QString filename = QFileInfo(url.path()).fileName(); 函数获取文件名的,不过这个对第二种不其作用,对于第二种url 如何获取文件名呢?
QNetworkAccessManager m_manager;QNetworkRequest request(url);QNetworkReply *tmp = m_manager.get(request);之后返回的 tmp 中可以通过 tmp->rawHeader("Content-Disposition");获得文件名,qDebug()<<tmp->rawHeaderList(); 可以打印出 rawHeaderList() 返回的 列表. m_manager.get(request) ,应该是异步的,m_manager.get(request); 之后立即调用rawHeader("Content-Disposition") 可能会获取空值。
如何从http://xxxxxxx/databrowser/qt_update 这样的url中简单获取到要下载的文件名为test.zip
QString strDisposition = m_networkReply->rawHeader("Content-Disposition");
int index = strDisposition.indexOf("filename=");
QString fileName = strDisposition.mid(index + 9);
if (fileName.isEmpty())
{
QUrl url(url);
QFileInfo fileInfo(url.path());
fileName += fileInfo.fileName();
}要把这个URL请求发送出去,等服务器跳转到真实的下载地址才能知道下载的文件名