2015-10-01 4 views
15

मैं एसएसटीपी प्रोटोकॉल का उपयोग कर एसएफटीपी प्रोटोकॉल का उपयोग कर एक फ़ाइल अपलोड करने की कोशिश कर रहा हूं। नीचे दिए गए कोड मैंसी # में एसएसएच.NET का उपयोग कर फ़ाइल एसएफटीपी अपलोड करने में असमर्थ - अनुमति अस्वीकार

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(); 

उपयोग कर रहा हूँ मैं कनेक्ट करने में सक्षम हूँ और filestream भी शून्य नहीं है। लेकिन मुझे फ़ाइल अपलोड करने का प्रयास करते समय PermissionDeniedException मिल रहा है।

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) 

क्या उपरोक्त कोड से मुझे कोई भी सेटिंग याद आ रही है। किसी भी प्रकार की मदद की बेहद सराहना की जाती है।

उत्तर

19

आपको फ़ाइल अपलोड करने के लिए एक पूर्ण पथ निर्दिष्ट करने की आवश्यकता है।

उदाहरण के लिए:

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

पथ के बिना, SFTP सर्वर शायद यह है कि आप करने के लिए एक लेखन पहुँच नहीं है एक रूट फ़ोल्डर या अन्य फ़ोल्डर में फ़ाइल में लिखने की कोशिश करता है (इसलिए अनुमति से इनकार किया)।

6

आप ऐसा कर सकते हैं:

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(); 
    } 
} 
संबंधित मुद्दे