public ActionResult GetFTPPathContents(FTPCredentials credentials, string path) { using (var sftp = new SftpClient(credentials.Address, credentials.Port, credentials.Login, credentials.Password)) { try { sftp.Connect(); var results = sftp.ListDirectory(path); return(Json(results.Where(r => r.Name != "." && r.Name != "..").Select(r => new FTPItems { Name = r.Name, Path = r.FullName, Type = r.IsDirectory ? ItemTypes.Folder : ItemTypes.File }))); } finally { if (sftp.IsConnected) { sftp.Disconnect(); } } } }
public async Task <ActionResult> LoadFTPFiles(FTPCredentials credentials, Guid requestId, IEnumerable <string> paths) { List <Document> uploadedDocuments = new List <Document>(); using (var sftp = new SftpClient(credentials.Address, credentials.Port, credentials.Login, credentials.Password)) { try { sftp.Connect(); foreach (var path in paths) { var fileInfo = sftp.Get(path); using (var sSource = sftp.OpenRead(path)) { using (var db = new DataContext()) { var document = new Document { CreatedOn = DateTime.UtcNow, FileName = fileInfo.Name, ItemID = requestId, Length = fileInfo.Length, MimeType = FileEx.GetMimeTypeByExtension(fileInfo.Name), Name = fileInfo.Name, Viewable = false, Kind = DocumentKind.User }; db.Documents.Add(document); uploadedDocuments.Add(document); await db.SaveChangesAsync(); var docStream = new DocumentStream(db, document.ID); await sSource.CopyToAsync(docStream); } } } } catch (Exception ex) { return(new HttpStatusCodeResult((int)HttpStatusCode.BadRequest, ex.Message)); } finally { if (sftp.IsConnected) { sftp.Disconnect(); } } } Response.StatusCode = (int)HttpStatusCode.OK; Response.ContentType = "application/json"; return(Json(uploadedDocuments.Select(d => new { d.ID, d.FileName, d.MimeType, Size = d.Length }), JsonRequestBehavior.AllowGet)); }
public ActionResult VerifyFTPCredentials(FTPCredentials credentials) { using (var sftp = new SftpClient(credentials.Address, credentials.Port, credentials.Login, credentials.Password)) { try { sftp.Connect(); Response.StatusCode = (int)HttpStatusCode.OK; Response.ContentType = "application/json"; return(Content("{}")); } catch (Exception ex) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, ex.Message)); } finally { if (sftp.IsConnected) { sftp.Disconnect(); } } } }