亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么用QT實現FTP上傳文件

發布時間:2022-08-26 17:40:35 來源:億速云 閱讀:319 作者:iii 欄目:開發技術

本篇內容主要講解“怎么用QT實現FTP上傳文件”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么用QT實現FTP上傳文件”吧!

兩臺電腦通過網線建立本地連接,保證網關在同一段;

怎么用QT實現FTP上傳文件

服務器端打開ftp;

控制面板→程序→啟用或關閉windows功能→windows功能→Internet信息服務
啟用“FTP服務”FTP擴展性” IIS管理控制臺”

怎么用QT實現FTP上傳文件

開始屏幕的搜索中輸入“IIS”,然后點擊打開“IIS管理器”
打開“IIS管理器”后,在左欄的“網站”上點擊右鍵,打開“添加FTP站點”
然后按照提示填寫站點信息
點擊“下一步”,按照下圖提示,設置“綁定和SSL設置”,在“IP地址”處,可以用內網IP也可以用外網IP,訪客自然也就根據你的IP設定來決定;
點擊“下一步”,設置“身份驗證和授權信息”
然后在本機瀏覽器地址欄中輸入“ftp://填寫的IP”測試一下

客戶端網頁測試遠程訪問;

客戶端(另一臺電腦)瀏覽器地址欄中輸入“ftp://填寫的IP”測試一下

客戶端cmd測試遠程訪問;

win+r打開運行窗口,輸入cmd
回車打開cmd命令窗口
cmd命令中輸入:ftp回車
回車切換至ftp命令窗口,輸入命令:open,回車提示:到
到即所要連接測試的ftp地址,我們輸入:IP 22
即:ip地址+空格+端口號,沒有+號
回車后彈出用戶一行,輸入ftp的用戶名后回車,輸入ftp用戶名對應的密碼
輸入密碼后回車,如果提示,user logged in就說么ftp創建無問題

客戶端程序測試遠程訪問。

新建程序,添加ftpclass.cpp、ftpclass.h,復制main.cpp內容到程序入口函數
注意:/項目-屬性-常規-字符集-使用多字節字符集/

怎么用QT實現FTP上傳文件

//main.cpp
#include "stdafx.h"
#include "ftpclass.h"

void main()
{
    printf("------- 開始測試!------\n");
    printf("01--創建連接 %d\n", FtpClass::createConnection());
    printf("02--打開目標ftp %d\n", FtpClass::createTable());    
    
    /*可以讀取ini內參數
    FtpClass::ftp_Ip = TEXT("Ini讀取");
    FtpClass::ftp_Port = TEXT("Ini讀取");
    FtpClass::ftp_User = TEXT("Ini讀取");
    FtpClass::ftp_Password = TEXT("Ini讀取");
    FtpClass::ftp_Fixed_Path = TEXT("Ini讀取");*/
    
    printf("03--創建文件夾 %d\n", FtpClass::createFolder("自動生成目錄1","自動生成目錄2","自動生成目錄3"));    
    /*上傳目標路徑*/

    printf("04--上傳文件 %d\n", FtpClass::insert( "D:/a.txt", "b.txt"));
    /*本機文件需要上傳文件*/  /*上傳后文件名稱,可以和本地文件名稱不一樣,類型最好別換*/
    
    printf("05--關閉通訊 %d\n", FtpClass::createClose());
    printf("------ 結束測試!------\n");
    
    return ;
}
//ftpclass.h
/*項目-屬性-常規-字符集-使用多字節字符集*/
/*wininet.lib、shlwapi.lib可以直接添加到附加依賴項*/
/*BOOL_VERIFY、NULL_VERIFY 程序結束判斷*/


#pragma once

#pragma comment(lib,"wininet.lib")
#pragma comment(lib,"shlwapi.lib")

#define  BOOL_VERIFY(emStatus_bool,switch_bool) \
if (emStatus_bool == true)\
{return true;}\
else{\
if (switch_bool == 3) printf("      FTP_03_err:創建文件夾失敗!%d\n"); \
if (switch_bool == 4) printf("      FTP_04_err:上傳文件失敗!\n");     \
if (switch_bool == 5) printf("      FTP_05_err:關閉窗口句柄失敗!\n"); \
return false;\
}


#define  NULL_VERIFY(emStatus_null,switch_null) \
if (emStatus_null != NULL)\
{return true;}\
else{\
if (switch_null == 1) {printf("      FTP_01_err:打開通訊錯誤 Error:%d\n", GetLastError());}\
if (switch_null == 2) {printf("      FTP_02_err:建立連接錯誤 Error:%d\n", GetLastError());}\
return false;\
}


#include "stdafx.h"//沒用
#include <afxinet.h>//MFC相關
#include "wininet.h"//調用FTP相關類
#include "shlwapi.h"//調用文件操作相關類


class FtpClass
{
public:    
    /*ini讀取變量*/
    static CString ftp_Ip;//目標ip
    static CString ftp_Port;//目標端口
    static CString ftp_User;//目標賬戶
    static CString ftp_Password;//目標密碼
    static CString ftp_Fixed_Path;//目標固定路徑
    static CString ftp_Free_Path;//目標自己生成路徑
    
     /*全局變量*/
    static BOOL  pRes;
    static HINTERNET hInternet;
    static HINTERNET hConnect;
    
    /*全局函數*/
    static bool createConnection();                                            //創建一個連接
    static bool createTable();    
    static bool ThreadInternetConnect(PVOID ) 
    //打開目標ftp
    static bool createFolder(CString temp1, CString temp2, CString temp3);  //上傳文件
    static bool insert(CString temp, CString temp1);                        //出入數據
    static bool createClose();                                              //斷開連接
};
//ftpclass.cpp
#include "stdafx.h"
#include "ftpclass.h"

CString FtpClass::ftp_Ip = TEXT("192.168.3.104");
CString FtpClass::ftp_Port = TEXT("21");
CString FtpClass::ftp_User = TEXT("Administrator");
CString FtpClass::ftp_Password = TEXT("xinxin");
CString FtpClass::ftp_Fixed_Path = TEXT("1級固定目錄/2級固定目錄/3級固定目錄");
CString FtpClass::ftp_Free_Path = TEXT("自動生成目錄");
BOOL  FtpClass::pRes = false;
HINTERNET FtpClass::hInternet = NULL;
HINTERNET FtpClass::hConnect = NULL;


//創建一個連接
bool FtpClass::createConnection() {
    /*ftp_Ip = TEXT("Ini讀取");
    ftp_Port = TEXT("Ini讀取");
    ftp_User = TEXT("Ini讀取");
    ftp_Password = TEXT("Ini讀取");
    ftp_Fixed_Path = TEXT("Ini讀取");*/

    hInternet = InternetOpen(NULL, INTERNET_OPEN_TYPE_DIRECT,
        NULL, NULL, INTERNET_FLAG_NO_CACHE_WRITE);
    NULL_VERIFY(hInternet,1);
}
bool FtpClass::ThreadInternetConnect(PVOID param) {

 // 打開http      
 hConnect = InternetConnect(hInternet, ftp_Ip, INTERNET_DEFAULT_FTP_PORT,//INTERNET_DEFAULT_FTP_PORT  第三個參數默認值21
  ftp_User, ftp_Password, INTERNET_SERVICE_FTP,
  INTERNET_FLAG_EXISTING_CONNECT || INTERNET_FLAG_PASSIVE, 0);

 return 1;
}

//打開目標ftp
bool FtpClass::createTable()
{
 /*hConnect = InternetConnect(hInternet, ftp_Ip, 25,//INTERNET_DEFAULT_FTP_PORT  第三個參數默認值21
  ftp_User, ftp_Password, INTERNET_SERVICE_FTP,
  INTERNET_FLAG_EXISTING_CONNECT || INTERNET_FLAG_PASSIVE, 0);
 NULL_VERIFY(hConnect,2);*/
 HANDLE hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ThreadInternetConnect, (LPVOID)NULL, 0, NULL); 
 //超時3秒,如果等待結果是超時
 if (WaitForSingleObject(hThread, 3 * 1000) == WAIT_TIMEOUT) {
  TerminateThread(hThread, 0);
  CloseHandle(hThread);
  NULL_VERIFY(hConnect, 2);  
 }
 NULL_VERIFY(hConnect, 2);
}

//上傳文件
bool FtpClass::createFolder(CString temp1, CString temp2, CString temp3)
{
    /*新建文件件每次只能創建一級,多個需要分多次創建*/
    pRes = false;    
    ftp_Free_Path = "";
    ftp_Free_Path = ftp_Fixed_Path  + "/" + temp1;
    FtpCreateDirectory(hConnect, ftp_Free_Path);
    ftp_Free_Path = ftp_Free_Path + "/" + temp2;
    FtpCreateDirectory(hConnect, ftp_Free_Path);
    ftp_Free_Path = ftp_Free_Path + "/" + temp3;
    pRes = FtpCreateDirectory(hConnect, ftp_Free_Path);
    BOOL_VERIFY(pRes,3);
}
//出入數據
bool FtpClass::insert(CString temp, CString temp1)
{
    pRes = false;
    ftp_Free_Path = ftp_Free_Path + "/" +temp1;
    pRes = FtpPutFile(hConnect, temp,/*本機文件*/
        ftp_Free_Path,  /*TEXT("一級目錄/二級目錄/三級目錄/a.txt"),*/
        FTP_TRANSFER_TYPE_ASCII, 0);
    BOOL_VERIFY(pRes,4);
}
//斷開連接
bool FtpClass::createClose()
{    
    pRes = false;
    if (InternetCloseHandle(hConnect))
        pRes = InternetCloseHandle(hInternet);
    BOOL_VERIFY(pRes,5);
}

到此,相信大家對“怎么用QT實現FTP上傳文件”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

鄂州市| 唐海县| 布拖县| 佛学| 鸡泽县| 昌吉市| 冕宁县| 济阳县| 西丰县| 清镇市| 盘锦市| 双柏县| 绥中县| 黄石市| 保德县| 新兴县| 静海县| 石家庄市| 洛宁县| 乡城县| 盈江县| 淳安县| 东海县| 涡阳县| 灵宝市| 湘阴县| 防城港市| 县级市| 澄江县| 师宗县| 佛山市| 吴江市| 永年县| 华蓥市| 睢宁县| 六枝特区| 东至县| 林周县| 金寨县| 中山市| 湾仔区|