2015-10-01 15 views
15

SSH.NET kütüphanesini kullanarak C# kullanarak SFTP protokolünü kullanarak dosya yüklemeye çalışıyorum. Aşağıda ben bağlantı kurabiliyorum ben C# SSH.NET kullanarak SFTP dosyası yüklenemedi. İzin Reddedildi

FileInfo f=new FileInfo("C:\\mdu\\abcd.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(); 

kullanıyorum kodudur ve filestream da BOŞ değildir. Ama bir dosya yüklemeye çalışırken PermissionDeniedException alıyorum. Yukarıdaki koddan eksik olan ayarlarım var mı? Herhangi bir yardım çok takdir edilmektedir.

cevap

19

Dosyayı da yüklemek için tam bir yol belirlemelisiniz. Örneğin

:

client.UploadFile(fileStream, "/home/user/" + f.Name, null); 

yolu olmadan, SFTP sunucusu muhtemelen bir yazma erişimi olmayan bir kök klasör veya diğer klasöre yazmaya çalıştığında (dolayısıyla izni engellendi).

6

Bunu yapabilirsin:

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(); 
    } 
} 
İlgili konular