Impossible de télécharger un fichier SFTP en utilisant SSH.NET en C# - Permission refusée
j'essaie de télécharger un fichier en utilisant le protocole SFTP en utilisant C# using SSH.NET bibliothèque. Ci-dessous est le code, je suis en utilisant
FileInfo f=new FileInfo("C:mduabcd.xml");
string uploadfile=f.FullName;
Console.WriteLine(f.Name);
Console.WriteLine("uploadfile"+uploadfile);
var client = new SftpClient(host, port, username, password);
client.Connect();
if(client.IsConnected){
Console.WriteLine("I AM CONNECTED");
}
var fileStream = new FileStream(uploadfile, FileMode.Open);
if(fileStream!=null){
Console.WriteLine("YOU ARE NOT NULL");
}
client.BufferSize = 4 * 1024;
client.UploadFile(fileStream, f.Name,null);
client.Disconnect();
client.Dispose();
je suis en mesure de se connecter et de l' filestream
aussi, n'est pas NULL. Mais je suis PermissionDeniedException
tout en essayant de télécharger un fichier.
Unhandled Exception: Renci.SshNet.Common.SftpPermissionDeniedException: Permission denied
at Renci.SshNet.Sftp.SftpSession.RequestOpen(String path, Flags flags, Boolean nullOnError)
at Renci.SshNet.SftpClient.InternalUploadFile(Stream input, String path, Flags flags, SftpUploadAsyncResult asyncResult, Action`1 uploadCallback)
at Renci.SshNet.SftpClient.UploadFile(Stream input, String path, Boolean canOverride, Action`1 uploadCallback)
at Renci.SshNet.SftpClient.UploadFile(Stream input, String path, Action`1 uploadCallback)
at movemsi.Program.UploadFile()
at movemsi.Program.Main(String[] args)
y a-t-il des réglages qui manquent dans le code ci-dessus? Toute aide est très appréciée.
17
demandé sur
Martin Prikryl
2015-10-01 04:41:01
2 réponses
Vous devez spécifier un chemin d'accès complet à télécharger le fichier.
Par exemple:
client.UploadFile(fileStream, "/home/user/" + f.Name, null);
sans le chemin, le serveur SFTP essaie probablement d'écrire le fichier dans un dossier racine ou un autre dossier auquel vous n'avez pas accès en écriture (d'où le Permission refusée).
20
répondu
Martin Prikryl
2015-10-01 07:25:40
Vous pouvez faire ceci:
FileInfo f = new FileInfo("C:\mdu\abcd.xml");
string uploadfile = f.FullName;
Console.WriteLine(f.Name);
Console.WriteLine("uploadfile" + uploadfile);
//Passing the sftp host without the "sftp://"
var client = new SftpClient("ftp.example.com", port, username, password);
client.Connect();
if(client.IsConnected)
{
var fileStream = new FileStream(uploadfile, FileMode.Open);
if(fileStream != null)
{
//If you have a folder located at sftp://ftp.example.com/share
//then you can add this like:
client.UploadFile(fileStream, "/share/" + f.Name,null);
client.Disconnect();
client.Dispose();
}
}
6
répondu
Ernest
2016-07-06 21:34:04