private FtpStatusCode UploadFile(SFTPUploadArgument uploadArgument) { m_Logger.Debug($"uploadArgument:{uploadArgument}"); Requires.NotNull(uploadArgument, "uploadArgument"); Requires.NotNullOrEmpty(uploadArgument.RemoteHost, "remoteHost"); Requires.NotNullOrEmpty(uploadArgument.LocalPathWithFileName, "localPathWithFileName"); Requires.NotNullOrEmpty(uploadArgument.BaseDirectory, "baseDirectory"); Requires.NotNullOrEmpty(uploadArgument.TargetPath, "targetPath"); Requires.NotNullOrEmpty(uploadArgument.UserName, "userName"); Requires.NotNullOrEmpty(uploadArgument.Password, "password"); _sftpClient = GetInstance(uploadArgument.RemoteHost, uploadArgument.UserName, uploadArgument.Password); var sftpResult = _sftpClient.UploadFile(uploadArgument.IsNeedCheckDirectory, uploadArgument.LocalPathWithFileName, uploadArgument.BaseDirectory, uploadArgument.TargetPath, uploadArgument.UpFileName); if (!string.IsNullOrEmpty(uploadArgument.NeedChage) && uploadArgument.NeedChage != "0") { short newPermission = Convert.ToInt16(uploadArgument.Permission); string _baseDir = uploadArgument.BaseDirectory + "/"; string[] paths = uploadArgument.TargetPath.Split('/'); foreach (string path in paths) { _baseDir = _baseDir + path + "/"; _sftpClient.changePermission(_baseDir, newPermission); } // 如果未传入上传后的文件名,使用源文件的名称 string fileName = string.IsNullOrWhiteSpace(uploadArgument.UpFileName) ? Path.GetFileName(uploadArgument.LocalPathWithFileName) : uploadArgument.UpFileName; _sftpClient.changePermission(_baseDir + "/" + fileName, newPermission); } return(sftpResult); }
public void UploadFile(SFTPUploadArgument uploadArgument, CallbackContext callbackContext) { try { var sftpResult = UploadFile(uploadArgument); callbackContext.SendPluginResult(new PluginResult(PluginResult.Status.OK, sftpResult)); } catch (Exception e) { m_Logger.Error(e); callbackContext.Error(new { type = "Exception", code = "", message = e.Message, details = e.StackTrace }); } }