上传到FTP服务器c#使用Tamir.SharpSSH
本文关键字:使用 Tamir SharpSSH 服务器 FTP | 更新日期: 2023-09-27 18:16:49
我能够连接到我的sftp服务器,我确信它,因为我得到了我的服务器的文件列表,它传递正确的列表。但我不能上传文件到一个文件夹在mysftp服务器。下面是我的代码:
private static void FileUploadUsingSftp(string SFTPAddress, string SFTPUserName, string SFTPPassword,
string SFTPFilePath, string FileName)
{
Sftp sftp = null;
try
{
sftp = new Sftp( SFTPAddress,SFTPUserName , SFTPPassword);
// Connect Sftp
sftp.Connect();
MessageBox.Show("Connected!");
//Check if im surely connected
//list down files in my sftp server folder u01
ArrayList list;
list = sftp.GetFileList("//u01");
foreach (string item in list)
{
MessageBox.Show(item.ToString());
}
MessageBox.Show(list.Count.ToString());
// upload file
sftp.Put(FileName, "//u01"); -----> **I get exception here**
MessageBox.Show("UPLOADED!");
// Close the Sftp connection
sftp.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
if (sftp != null)
{
sftp.Close();
}
}
}
我收到这个异常:
"Exception of type 'Tamir.SharpSsh.jsch.SftpException' was thrown."
at Tamir.SharpSsh.jsch.ChannelSftp.put(String src, String dst, SftpProgressMonitormonitor, Int32 mode)
at Tamir.SharpSsh.Sftp.Put(String fromFilePath, String toFilePath)
我试过使用sftp。Put(FileName,SFTPAddress + "//u01");
Ive try sftp.Put(FileName,SFTPAddress);它确实有效,但当我查看我的sftp服务器时如果文件在那里,它就不在了。
我试过sftp.Put(FileName,"//u01");并抛出相同的错误
我必须上传我的文件在我的ftp服务器的一个文件夹,其中一个文件夹是u01。
有谁能帮帮我吗?我不知道怎么了。我确信我是有联系的。当我尝试使用filezilla上传时,它确实工作,所以我不限制在我们的sftp服务器上写我认为您必须在呼叫Put
时输入完整的文件名。
string strippedFileName = StripPathComponent(FileName);
sftp.Put(FileName,"//u01//" + strippedFileName);
请注意,StripPathComponent
没有实现,如果需要,您也必须实现它。它将从FileName
中剥离一个路径分量,即移除C:'...'
或..'...'
。
我也在寻找如何使用这个库从本地/共享路径上传文件到SFTP服务器,最终找到了解决方案。您可以使用下面的代码:
string host="ssgty";
string username="usr";
string password="passw";
int port=22;
string fromFile=@"D:'Test.txt";
string toFile=@"/dmon/myfolder/Test.txt";
public string CopyToFTP(string host, string username, string password, int port, string fromFile, string toFile)
{
string error = "";
try
{
Scp scp = new Scp(host, username, password);
scp.Connect(port);
scp.To(fromFile, toFile);
}
catch (Exception ex)
{
error = ex.Message;
}
return error;
}