我使用以下代码将文件上载到sFTP
服务器。我已经做了一个测试上传使用FileZilla和文件上传成功。
try
{
var client = new SftpClient(host, port, username, password);
client.Connect();
client.ChangeDirectory(workingDir);
var listDirectory = client.ListDirectory(workingDir);
foreach (var file in files)
{
var fileStream = new FileStream(file, FileMode.OpenOrCreate);
client.BufferSize = 4 * 1024; // bypass payload error large files
client.UploadFile(fileStream, Path.GetFileName(file));
Log.Info(string.Format("File [{0}] upload complete",file));
}
}
catch (Exception ex)
{
Log.Error(ex.Message);
}
但是,在上面的代码中,我似乎无法完成上传,因为我得到了以下错误:
不知道这样的主人。
这可能是因为我使用的是主机的Url值而不是IP?(我已经对另一个使用IP的FtP服务器进行了测试,这似乎也很有效)我想知道是否是这样的?如果是这样的话,有没有办法让SftpClient
(Ssh.Net)处理这个Url?
发布于 2017-02-06 07:15:27
主机参数可以是可以解析为IP地址的IP地址或主机名。它可能不是URL,这与技术观点完全不同。
某个完整的应用程序接受某个主机名以外的其他内容这一事实说明不了什么:它将该字符串拆分成独立的令牌,并连接到解析主机名时返回的IP地址。但这并不意味着您可以打开到URL或任意字符串的任何网络连接。只能打开到IP地址的连接。
因此,如果您在某些“程序”中成功地测试了一些URL (如sftp://ftp.example.com/ContactImport
),这并不意味着您可以在代码中内部使用该字符串作为主机参数。您需要使用作为该URL一部分的主机名,因此在本例中为ftp.example.com
,因为只有该主机名才能成功地解析为IP地址。
https://stackoverflow.com/questions/42070181
复制相似问题