FTP 文件上传
Ftp File Upload
BOOL uploadFile(char *filename, char *destination_name, char *address, char *username, char *password)
{
BOOL t = false;
HINTERNET hint, hftp;
hint = InternetOpen("FTP", INTERNET_OPEN_TYPE_PRECONFIG, 0, 0, INTERNET_FLAG_ASYNC);
hftp = InternetConnect(hint, address, INTERNET_DEFAULT_FTP_PORT, username, password, INTERNET_SERVICE_FTP, 0 , 0);
t = FtpPutFile(hftp, filename, destination_name, FTP_TRANSFER_TYPE_BINARY, 0);
InternetCloseHandle(hftp);
InternetCloseHandle(hint);
return t;
}
这是我将文件上传到服务器的功能,写得好吗? 我正在使用函数
uploadFile(workFullPath,extractFilename(workFullPath),"address","login","password");
但是我的文件没有出现在ftp上。
您根本没有进行任何错误处理,因此您无法知道为什么文件没有上传。
每当 WinInet 函数失败时,都可以根据每个函数的 WinInet 文档调用GetLastError()
以找出失败的原因。
如果GetLastError()
返回ERROR_INTERNET_EXTENDED_ERROR
,请使用InternetGetLastResponseInfo()
获取服务器的错误:
ERROR_INTERNET_EXTENDED_ERROR
12003
从服务器返回扩展错误。这通常是包含详细错误消息的字符串或缓冲区。调用InternetGetLastResponseInfo
以检索错误文本。
有关使用InternetGetLastResponseInfo()
的示例,请参阅 WinNet 的处理错误文档。
其他需要注意的事情 - 您正在使用INTERNET_FLAG_ASYNC
标志调用InternetOpen()
:
仅对从此函数返回的句柄派生的句柄发出异步请求。
但是,您实际上并没有异步使用 WinInet,因此您根本不应该使用该标志。
请参阅 WinInet的 FTP 会话文档,了解有关如何使用 WinInet FTP 功能的更多详细信息。
尝试更多类似的东西:
BOOL uploadFile(char *filename, char *destination_name, char *address, char *username, char *password)
{
BOOL res = FALSE;
DWORD err;
HINTERNET hint = InternetOpen("FTP", INTERNET_OPEN_TYPE_PRECONFIG, 0, 0, 0);
if (hint == NULL)
{
err = GetLastError();
// handle the error as needed...
goto done;
}
HINTERNET hftp = InternetConnect(hint, address, INTERNET_DEFAULT_FTP_PORT, username, password, INTERNET_SERVICE_FTP, 0 , 0);
if (hftp == NULL)
{
err = GetLastError();
// handle the error as needed...
goto cleanup;
}
res = FtpPutFile(hftp, filename, destination_name, FTP_TRANSFER_TYPE_BINARY, 0);
if (!res)
{
err = GetLastError();
// handle the error as needed...
}
cleanup:
if (hftp) InternetCloseHandle(hftp);
if (hint) InternetCloseHandle(hint);
done:
return res;
}
相关文章:
- C++库库尔如何发送FTP文件usign STOR和REST
- FTP 文件上传
- FTP 使用 QNetworkAccessManager 写入文件
- C Wininet FTP列出了许多文件错误
- 连接到 FTP 服务器并访问文件
- 如何在不保存文件的情况下制作打印屏幕并将其发送到FTP服务器?我的工作代码将文件保存到HDD
- 如何在http代理后面下载带有ftp url的文件
- 使用Libcurl从FTP服务器下载多个文件
- 从FTP自动下载文件并检查现有文件
- 判断文件是否为FTP服务器上的目录
- FTP 文件夹同步 c / obj c.
- 当我尝试通过Qt在FTP上获取文件时出错
- C++libcurl——从ftp下载一个txt文件并保存为字符串
- 如何通过 FTP 'touch'远程文件?
- FTP递归文件上传,下载和删除
- 如何获得ftp服务器中所有文件和文件夹的列表(c++)
- 为FTP服务器制作文件-当头文件被修改时编译
- 我不能上传文件到FTP服务器
- 如何ftp正在使用的文件
- FTP服务器文件传输