我试图将文件上传到Linux服务器,但我收到一个错误说:" Unable to connect to the remote server
".我不知道我的代码是错还是连接被服务器阻止 - 我可以用FileZilla连接服务器.
我的代码:
const string UserName = "userName"; const string Password = "password"; const string ServerIp = "11.22.333.444/"; public bool UploadFile(HttpPostedFileBase file) { string fileName = file.FileName; var serverUri = new Uri("ftp://" + ServerIp + fileName); // the serverUri should start with the ftp:// scheme. if (serverUri.Scheme != Uri.UriSchemeFtp) return false; try { // get the object used to communicate with the server. var request = (FtpWebRequest)WebRequest.Create(serverUri); request.EnableSsl = true; request.UsePassive = true; request.UseBinary = true; request.Credentials = new NetworkCredential(UserName, Password); request.Method = WebRequestMethods.Ftp.UploadFile; // read file into byte array var sourceStream = new StreamReader(file.InputStream); byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd()); sourceStream.Close(); request.ContentLength = fileContents.Length; // send bytes to server Stream requestStream = request.GetRequestStream(); requestStream.Write(fileContents, 0, fileContents.Length); requestStream.Close(); var response = (FtpWebResponse)request.GetResponse(); Console.WriteLine("Response status: {0}", response.StatusDescription); } catch (Exception exc) { throw exc; } return true; }
Trevor Nestm.. 26
使用C#上传SFTP文件
我找到的最好的库/ NuGet包是Renci的SSH.NET.打开Nuget Package Manager并将其安装到您的项目中.
上传可以使用存储的文件或byte[]
文件完成.
// you could pass the host, port, usr, and pass as parameters public void FileUploadSFTP() { var host = "whateverthehostis.com"; var port = 22; var username = "username"; var password = "passw0rd"; // http://stackoverflow.com/questions/18757097/writing-data-into-csv-file/39535867#39535867 byte[] csvFile = DownloadCSV(); // Function returns byte[] csv file using (var client = new SftpClient(host, port, username, password)) { client.Connect(); if (client.IsConnected) { Debug.WriteLine("I'm connected to the client"); using (var ms = new MemoryStream(csvFile)) { client.BufferSize = (uint)ms.Length; // bypass Payload error large files client.UploadFile(ms, GetListFileName()); } } else { Debug.WriteLine("I couldn't connect"); } } }
这是我用来作为资源让我入门的引用:http://blog.deltacode.be/2012/01/05/uploading-a-file-using-sftp-in-c-sharp/ 这是为...上传文件.
// you could pass the host, port, usr, pass, and uploadFile as parameters public void FileUploadSFTP() { var host = "whateverthehostis.com"; var port = 22; var username = "username"; var password = "passw0rd"; // path for file you want to upload var uploadFile = @"c:yourfilegoeshere.txt"; using (var client = new SftpClient(host, port, username, password)) { client.Connect(); if (client.IsConnected) { Debug.WriteLine("I'm connected to the client"); using (var fileStream = new FileStream(uploadFile, FileMode.Open)) { client.BufferSize = 4 * 1024; // bypass Payload error large files client.UploadFile(fileStream, Path.GetFileName(uploadFile)); } } else { Debug.WriteLine("I couldn't connect"); } } }
我找到的最好的库/ NuGet包是Renci的SSH.NET.打开Nuget Package Manager并将其安装到您的项目中.
上传可以使用存储的文件或byte[]
文件完成.
// you could pass the host, port, usr, and pass as parameters public void FileUploadSFTP() { var host = "whateverthehostis.com"; var port = 22; var username = "username"; var password = "passw0rd"; // http://stackoverflow.com/questions/18757097/writing-data-into-csv-file/39535867#39535867 byte[] csvFile = DownloadCSV(); // Function returns byte[] csv file using (var client = new SftpClient(host, port, username, password)) { client.Connect(); if (client.IsConnected) { Debug.WriteLine("I'm connected to the client"); using (var ms = new MemoryStream(csvFile)) { client.BufferSize = (uint)ms.Length; // bypass Payload error large files client.UploadFile(ms, GetListFileName()); } } else { Debug.WriteLine("I couldn't connect"); } } }
这是我用来作为资源让我入门的引用:http://blog.deltacode.be/2012/01/05/uploading-a-file-using-sftp-in-c-sharp/ 这是为...上传文件.
// you could pass the host, port, usr, pass, and uploadFile as parameters public void FileUploadSFTP() { var host = "whateverthehostis.com"; var port = 22; var username = "username"; var password = "passw0rd"; // path for file you want to upload var uploadFile = @"c:yourfilegoeshere.txt"; using (var client = new SftpClient(host, port, username, password)) { client.Connect(); if (client.IsConnected) { Debug.WriteLine("I'm connected to the client"); using (var fileStream = new FileStream(uploadFile, FileMode.Open)) { client.BufferSize = 4 * 1024; // bypass Payload error large files client.UploadFile(fileStream, Path.GetFileName(uploadFile)); } } else { Debug.WriteLine("I couldn't connect"); } } }