ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Windows下的Qt程序使用wget命令下载文件

2022-08-03 11:34:36  阅读:195  来源: 互联网

标签:pi Qt Windows si command file wget sa NULL


wget 非常稳定,它在带宽很窄的情况下和不稳定网络中有很强的适应性.如果是由于网络的原因下载失败,wget会不断的尝试,直到整个文件下载完毕。如果是服务器打断下载过程,它会再次联到服务器上从停止的地方继续下载。这对从那些限定了链接时间的服务器上下载大文件非常有用。

1.命令格式:

wget  [参数]  [URL地址]

2.示例代码:

QString command  = QString("wget -O \"%1/%2\" --no-check-certificate \"%3\"").arg(desktop_dir).arg(file_name).arg(download_url);
int ret = download_command(command.toLatin1().data());
if (ret) {
   QFile file("download_file.log");
   file.open(QIODevice::ReadOnly);
   QTextStream text_stream(&file);
   QString file_info = text_stream.readAll();
   m_text_log->setText(file_info);
   file.remove();
   file.close();
}
int DownloadFileDialog::download_command(const char *command)
{
    SECURITY_ATTRIBUTES sa;
    sa.nLength = sizeof(sa);
    sa.lpSecurityDescriptor = NULL;
    sa.bInheritHandle = TRUE;

    HANDLE h = CreateFile(L"download_file.log",
        FILE_WRITE_DATA,
        FILE_SHARE_WRITE | FILE_SHARE_READ,
        &sa,
        OPEN_ALWAYS,
        FILE_ATTRIBUTE_NORMAL,
        NULL);

    PROCESS_INFORMATION pi;
    STARTUPINFO si;
    BOOL ret = FALSE;
    DWORD flags = CREATE_NO_WINDOW;

    ZeroMemory(&pi, sizeof(PROCESS_INFORMATION));
    ZeroMemory(&si, sizeof(STARTUPINFO));
    si.cb = sizeof(STARTUPINFO);
    si.dwFlags |= STARTF_USESTDHANDLES;
    si.hStdInput = NULL;
    si.hStdError = h;
    si.hStdOutput = h;

    wchar_t cmd[1024] = {0};
    mbstowcs(cmd, command, strlen(command) + 1);
    ret = CreateProcess(NULL, cmd, NULL, NULL, TRUE, flags, NULL, NULL, &si, &pi);
    if (ret)
    {
        WaitForSingleObject(pi.hProcess, INFINITE);

        CloseHandle(pi.hProcess);
        CloseHandle(pi.hThread);
        CloseHandle(h);

        return 1;
    }
    CloseHandle(h);

    return -1;
}

 下载源码请点击这里

 

标签:pi,Qt,Windows,si,command,file,wget,sa,NULL
来源: https://www.cnblogs.com/QingYiShouJiuRen/p/16546449.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有