c++ - 无法使用 C++ 将文件上传到 ftp 服务器

标签 c++ ftp filezilla

我有这个简单的代码可以将文件上传到服务器,但它似乎不起作用,没有上传任何文件(FtpPutFile 返回 0)。我正在使用 FileZilla Server,这是我的代码以及 FileZilla 所说的内容:

void upload()
{
    hInternet = InternetOpen(NULL, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
    hFtpSession = InternetConnect(hInternet,"127.0.0.1",INTERNET_DEFAULT_FTP_PORT,"vbx","pass",INTERNET_SERVICE_FTP, 0,0 );
    FtpPutFile(hFtpSession, "c:\\stories.txt", "e:\\text.txt", FTP_TRANSFER_TYPE_BINARY, 0);
    InternetCloseHandle(hFtpSession);
    InternetCloseHandle(hInternet);
}

(000011)3/27/2011 0:01:53 AM - (not logged in) (127.0.0.1)> USER vbx
(000011)3/27/2011 0:01:53 AM - (not logged in) (127.0.0.1)> 331 Password required for vbx
(000011)3/27/2011 0:01:53 AM - (not logged in) (127.0.0.1)> PASS *******
(000011)3/27/2011 0:01:53 AM - vbx (127.0.0.1)> 230 Logged on
(000011)3/27/2011 0:01:53 AM - vbx (127.0.0.1)> disconnected.  

谢谢。

编辑:GetLastError() 返回:该进程无法访问该文件,因为它正被另一个进程使用。

最佳答案

对于 FtpPutFile,GetLastError() 返回 ERROR_SHARING_VIOLATION (32),这可能意味着“c:\stories.txt”的打开句柄阻止读取共享。如果您在程序中打开了此文件,则需要在 CreateFile 调用中允许读取共享或关闭所有阻止共享的打开句柄,以便 FtpPutFile 可以打开该文件。

关于c++ - 无法使用 C++ 将文件上传到 ftp 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5445606/

相关文章:

javascript - 网络服务器使用旧的不存在的文件来呈现网站

python - push_back/emplace_back 一个对象的浅拷贝到另一个 vector 中

c++ - 隐式与显式删除的复制构造函数

c++ 到 vb.net,情侣对话问题

ftp - 使用 ftp 重命名多个文件

android - 手机间隙 :Get the file from sdcard and upload it to the FTP Server in android

c++ - 提升为命名空间中的自定义小部件

c# - 抛出 WebException 的代码在 .NET 3.5 中有效,但在 4.0 中无效

linux - 如何通过filezilla客户端下载文件?

file-transfer - filezilla,写入失败时出错