ftp – 青春部落,流年似水 http://www.youthtribe.com 青春是一场远行,总记不起来时的路。 Thu, 30 Jun 2022 09:20:52 +0000 zh-CN hourly 1 https://wordpress.org/?v=6.1.6 ftp – 青春部落,流年似水 http://www.youthtribe.com/archives/1869 http://www.youthtribe.com/archives/1869#respond Thu, 08 Apr 2021 09:52:20 +0000 http://www.youthtribe.com/?p=1869 上传文件

QNetworkAccessManager manager;
QUrl url;
/* 设置通讯协议 */
url.setScheme("ftp");    
/* 设置用户名 */  
url.setUserName("root");  
/* 设置密码 */ 
url.setPassword("123456"); 
/* 设置主机,也可以是域名 */
url.setHost("127.0.0.1");
/* 设置端口号,一般为21 */  
url.setPort(21);         
/* 设置路径 */ 
url.setPath("/tmp/hello.png"); 

/* 装载本地文件 */
QFile file("/Desktop/hello.png"); 
file.open(QIODevice::ReadOnly);
/* 读取本地文件数据 */
QByteArray data = file.readAll(); 
file.close();

QNetworkRequest request(url);
/* 上传数据,上传成功后会在远端创建/tmp/hello.png文件 */
QNetworkReply* reply = manager.put(request, data); 

QEventLoop eventLoop; 
QObject::connect(reply, SIGNAL(finished()), &eventLoop, SLOT(quit()));
/* 进入等待,但事件循环依然进行 */
eventLoop.exec(); 

if (reply->error() != QNetworkReply::NoError) {
    qDebug() << "Error: " << reply->errorString();
}

下载文件

QNetworkAccessManager manager;
QUrl url;
/* 设置通讯协议 */
url.setScheme("ftp");      
/* 设置用户名 */
url.setUserName("root");   
/* 设置密码 */
url.setPassword("123456"); 
/* 设置主机,也可以是域名 */
url.setHost("127.0.0.1");  
/* 设置端口号,一般为21 */
url.setPort(21);           
/* 设置路径 */
url.setPath("/tmp/test.txt"); 

QNetworkRequest request(url);
/* 执行Get请求 */
QNetworkReply* reply = manager.get(request); 

QEventLoop eventLoop;
QObject::connect(reply, SIGNAL(finished()), &eventLoop, SLOT(quit()));
/* 进入等待,但事件循环依然进行 */
eventLoop.exec(); 

if (reply->error() == QNetworkReply::NoError) {
    /* 创建本地文件 */
    QFile file("test.txt"); 
    file.open(QIODevice::WriteOnly);
    /* 写入文件 */
    file.write(reply->readAll()); 
    file.close();
}
else {
    qDebug() << "Error: " << reply->errorString();
}

总结

  • 上传文件:配置url->加载数据->put操作
  • 下载文件:配置url->get操作->获取数据保存到文件
  • 如服务端没有身份验证,客户端可以省略用户名和密码操作。
  • https://zhuanlan.zhihu.com/p/92496797

    ]]>
    http://www.youthtribe.com/archives/1869/feed 0
    ftp – 青春部落,流年似水 http://www.youthtribe.com/archives/1410 http://www.youthtribe.com/archives/1410#respond Wed, 26 Nov 2014 07:45:46 +0000 http://www.youthtribe.com/?p=1410 OpenFile(文件路径); CFile file; int DownLength=0;//已经下载了的数据长度 if(目的目录下没有指定文件)//从头开始下载 { file.Open(目的文件路径,CFile::modeCreate|CFile::modeWrite); } else//断点续传 { file.Open(目]]> //我给个FTP下载的提示吧: CInternetSession session; CFtpConnection *pFtp=session.GetFtpConnection(FTP服务器地址,用户名,密码); CInternetFile *pFtpFile=pFtp->OpenFile(文件路径); CFile file; int DownLength=0;//已经下载了的数据长度 if(目的目录下没有指定文件)//从头开始下载 { file.Open(目的文件路径,CFile::modeCreate|CFile::modeWrite); } else//断点续传 { file.Open(目的文件路径,CFile::modeWrite); file.SeekToEnd(); DownLength=file.GetLength(); pFtpFile->Seek(DownLength,CFile::begin); } int SrcLength=pFtpFile->GetLength(); while(DownLength

    源方地址:
    http://bbs.csdn.net/topics/50249142

    ]]>
    http://www.youthtribe.com/archives/1410/feed 0
    ftp – 青春部落,流年似水 http://www.youthtribe.com/archives/1406 http://www.youthtribe.com/archives/1406#respond Sat, 22 Nov 2014 07:33:31 +0000 http://www.youthtribe.com/?p=1406 CreateDirectory("fffff"); CString strLocalFile; CFile fUpload("test.zip",CFile::modeRead|CFile::typeBinary); ]]> 直接上代码吧:

    void CftptestDlg::OnBnClickedButtonGo()
    {
    	// TODO: 在此添加控件通知处理程序代码
    	//开始上传
    	CInternetSession CIS;
    	CFtpConnection *ftp = CIS.GetFtpConnection("server","username","ps",21);
    	//建立文件夹
    	//ftp->CreateDirectory("fffff");
    	CString strLocalFile;
    	CFile fUpload("test.zip",CFile::modeRead|CFile::typeBinary);
    	//要上传的文件的大小
    	int nFileLength = fUpload.GetLength();
    	fUpload.Read(strLocalFile.GetBuffer(nFileLength),nFileLength);
    	strLocalFile.ReleaseBuffer(nFileLength);
    	fUpload.Close();
    	//远程ftp文件
    	CInternetFile *CIF = ftp->OpenFile("test.zip",GENERIC_WRITE,FTP_TRANSFER_TYPE_BINARY,1);
    	CIF->Write(strLocalFile.GetBuffer(nFileLength),nFileLength);
    	CIF->Close();
    }
    
    ]]>
    http://www.youthtribe.com/archives/1406/feed 0