public async Task <ResultData> EditRedisDevInfo([FromBody] RedisDataModel model) { try { if (model.TTLTime <= DateTime.Now) { return(ResultData.CreateResult("-1", "TTL过期时间不能早于当前日期", null)); } string redisConn = await GetRedisDBAddr(model.RedisAddr); RedisHelper redisHelper = new RedisHelper(redisConn); var timeSpan = model.TTLTime - DateTime.Now; var result = await redisHelper.Set(model.Type, model.Key, model.Value, timeSpan, model.RedisDB); if (result.Item1) { return(ResultData.CreateSuccessResult()); } else { return(ResultData.CreateResult("-1", $"修改失败,失败信息为:{result.Item2}", null)); } } catch (Exception ex) { return(ResultData.CreateResult("-1", $"异常信息:{ex.Message}", null)); } }
public async Task <ResultData> UpdateRedis() { using StreamReader bodyReader = new StreamReader(HttpContext.Request.Body, Encoding.UTF8); var data = await bodyReader.ReadToEndAsync(); JObject jObject = JObject.Parse(data); string localPath = ApiUtils.GetLocalPath(_dbContext, jObject["Guid"].ToString(), out string errorMessage); if (!string.IsNullOrEmpty(errorMessage)) { return(ResultData.CreateResult("-1", errorMessage, null)); } List <RedisInfo> info; using (StreamReader reader = new StreamReader(localPath)) { string json = await reader.ReadToEndAsync(); info = JsonConvert.DeserializeObject <List <RedisInfo> >(json); info[0].ServiceName = jObject["ServiceName"].ToString(); info[0].Servers[0].IP = jObject["IP"].ToString(); info[0].Servers[0].Port = jObject["Port"].ToString().ToInt32(); info[0].Address = jObject["Address"].ToString(); info[0].InstanceName = jObject["InstanceName"].ToString(); info[0].Password = jObject["Password"].ToString(); } using StreamWriter writer = new StreamWriter(localPath, false, Encoding.UTF8); await writer.WriteAsync(ApiUtils.ConvertJsonString(JsonConvert.SerializeObject(info))); return(ResultData.CreateSuccessResult()); }
public async Task <ResultData> UpdateLogger() { using StreamReader bodyReader = new StreamReader(HttpContext.Request.Body, Encoding.UTF8); var data = await bodyReader.ReadToEndAsync(); JObject jObject = JObject.Parse(data); string localPath = ApiUtils.GetLocalPath(_dbContext, jObject["Guid"].ToString(), out string errorMessage); if (!string.IsNullOrEmpty(errorMessage)) { return(ResultData.CreateResult("-1", errorMessage, null)); } List <Logger> info; using (StreamReader reader = new StreamReader(localPath)) { string json = await reader.ReadToEndAsync(); info = JsonConvert.DeserializeObject <List <Logger> >(json); info[0].DataAdapterType = jObject["DataAdapterType"].ToString(); info[0].DbInfo = jObject["DbInfo"].ToString(); info[0].LogLevel = jObject["LogLevel"].ToString(); } using StreamWriter writer = new StreamWriter(localPath, false, Encoding.UTF8); await writer.WriteAsync(ApiUtils.ConvertJsonString(JsonConvert.SerializeObject(info))); return(ResultData.CreateSuccessResult()); }
public async Task <ResultData> UpdateErpLog() { using StreamReader bodyReader = new StreamReader(HttpContext.Request.Body, Encoding.UTF8); var data = await bodyReader.ReadToEndAsync(); JObject jObject = JObject.Parse(data); string localPath = ApiUtils.GetLocalPath(_dbContext, jObject["Guid"].ToString(), out string errorMessage); if (!string.IsNullOrEmpty(errorMessage)) { return(ResultData.CreateResult("-1", errorMessage, null)); } ErpLogConfig info; using (StreamReader reader = new StreamReader(localPath)) { string json = await reader.ReadToEndAsync(); info = JsonConvert.DeserializeObject <ErpLogConfig>(json); info.MQConnModel.ConnectionModel.Host = jObject["Host"].ToString(); info.MQConnModel.ConnectionModel.Port = jObject["Port"].ToString(); info.MQConnModel.ConnectionModel.UserName = jObject["UserName"].ToString(); info.MQConnModel.ConnectionModel.Password = jObject["Password"].ToString(); } using StreamWriter writer = new StreamWriter(localPath, false, Encoding.UTF8); await writer.WriteAsync(ApiUtils.ConvertJsonString(JsonConvert.SerializeObject(info))); return(ResultData.CreateSuccessResult()); }
public async Task <ResultData> DeletePublicDataAdapters([FromBody] List <PublicDataAdapters> data) { string guid = Request.Query["guid"]; string localPath = ApiUtils.GetLocalPath(_dbContext, guid, out string errorMessage); if (!string.IsNullOrEmpty(errorMessage)) { return(ResultData.CreateResult("-1", errorMessage, null)); } List <PublicDataAdapters> infos; using (StreamReader reader = new StreamReader(localPath)) { string json = await reader.ReadToEndAsync(); infos = JsonConvert.DeserializeObject <List <PublicDataAdapters> >(json); } string[] dataAdapterAlias = data.Select(x => x.DataAdapterAlias).ToArray(); List <PublicDataAdapters> deleteData = infos.Where(x => dataAdapterAlias.Contains(x.DataAdapterAlias)).ToList(); foreach (var item in deleteData) { infos.Remove(item); } using StreamWriter writer = new StreamWriter(localPath, false, Encoding.UTF8); await writer.WriteAsync(ApiUtils.ConvertJsonString(JsonConvert.SerializeObject(infos))); return(ResultData.CreateSuccessResult()); }
public async Task <ResultData> AddPublicDataAdapters([FromBody] PublicDataAdapters info) { string guid = Request.Query["guid"]; string localPath = ApiUtils.GetLocalPath(_dbContext, guid, out string errorMessage); if (!string.IsNullOrEmpty(errorMessage)) { return(ResultData.CreateResult("-1", errorMessage, null)); } List <PublicDataAdapters> infos; using (StreamReader reader = new StreamReader(localPath)) { string json = await reader.ReadToEndAsync(); infos = JsonConvert.DeserializeObject <List <PublicDataAdapters> >(json); if (infos.Where(x => x.DataAdapterAccountName == info.DataAdapterAccountName || x.DataAdapterAlias == info.DataAdapterAlias).ToList().Count > 0) { return(ResultData.CreateResult("-1", "账套名称或账套号已存在", null)); } infos.Add(info); } using StreamWriter writer = new StreamWriter(localPath, false, Encoding.UTF8); await writer.WriteAsync(ApiUtils.ConvertJsonString(JsonConvert.SerializeObject(infos))); return(ResultData.CreateSuccessResult()); }
public ResultData BuildPublicDataAdapters([FromBody] List <DataBaseInfo> infos) { try { List <DataBaseInfo> dataBaseInfos = _dbContext.Queryable <DataBaseInfo>().In(infos.Select(x => x.Guid).ToArray()).ToList(); List <PublicDataAdapters> publicDataAdapters = new List <PublicDataAdapters>(); foreach (var item in dataBaseInfos) { PublicDataAdapters publicDataAdapter = new PublicDataAdapters { DataAdapterType = item.DataBaseType, DataAdapterAlias = item.AccountSetNumber, IsDefaultDataAdapter = "0", DataAdapterAccountName = item.AccountSetName, DataAdapterInfo = $"Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST={item.ServerAddress})(PORT={item.Port})))(CONNECT_DATA=(SERVICE_NAME={item.DataBaseName})));User Id={item.UserName};Password={item.UserPassword};{item.ConnectionStringOther}".ToEncodeString() }; publicDataAdapters.Add(publicDataAdapter); } return(ResultData.CreateSuccessResult("", JsonConvert.SerializeObject(publicDataAdapters))); } catch (Exception ex) { return(ResultData.CreateResult("-1", ex.Message, null)); } }
public ResultData Login([FromBody] UserInfo data) { if (data == null) { return(ResultData.CreateResult("-1", "用户名或密码不正确", null)); } KeyValuePair <bool, string> keyValue = ApiUtils.CheckFuncParams(data, "UserName", "Password"); if (!keyValue.Key) { return(ResultData.CreateResult("-1", $"验证失败,字段{keyValue.Value}不能为空", null)); } string pa = ApiUtils.MD5Encode(data.Password, "32"); UserInfo userInfo = _dbContext.Queryable <UserInfo>().Where(x => x.UserName.ToLower() == data.UserName.ToLower() && x.Password == ApiUtils.MD5Encode(data.Password, "32")).Single(); if (userInfo != null) { HttpContext.Session.SetData("user", userInfo); return(ResultData.CreateSuccessResult()); } else { return(ResultData.CreateResult("-1", "用户名或密码不正确", null)); } }
public async Task <ResultData> DeleteTaskDetailInfo([FromBody] List <TasksDetail> Tasks) { if (Tasks == null || Tasks.Count == 0) { return(ResultData.CreateResult("-1", "删除失败", null)); } int result = 0; var orgCodes = new int[Tasks.Count]; for (int i = 0; i < Tasks.Count; i++) { orgCodes[i] = Tasks[i].Guid; } result = await _sqliteSql.Delete <TasksDetail>().Where(o => orgCodes.Contains(o.Guid)).ExecuteAffrowsAsync(); if (result > 0) { return(ResultData.CreateSuccessResult()); } else { return(ResultData.CreateResult("-1", "删除失败", null)); } }
public async Task <ResultData> UpdateConfigJson([FromBody] ConfigJsonInfo info) { try { ConfigInfo config = _dbContext.Queryable <ConfigInfo>().Where(x => x.Guid == info.Guid).First(); if (config == null) { return(ResultData.CreateResult("-1", "本地文件不存在", null)); } string localPath = $"{Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)}/Configs{config.LocalPath}{config.ConfigName}".ToSystemPath(); if (!System.IO.File.Exists(localPath)) { return(ResultData.CreateResult("-1", "本地文件不存在", null)); } using (StreamWriter writer = new StreamWriter(localPath, false, Encoding.UTF8)) { await writer.WriteAsync(info.Json); } return(ResultData.CreateSuccessResult("", "")); } catch (Exception ex) { return(ResultData.CreateResult("-1", $"系统异常 {ex.Message}", null)); } }
public async Task <ResultData> UpdateServerInfo([FromBody] ServerInfo info) { if (string.IsNullOrEmpty(info.BusinessGuid) || string.IsNullOrEmpty(info.ServerAddress)) { return(ResultData.CreateResult("-1", "缺少必填字段", null)); } return(await ApiUtils.UpdateData(_dbContext, info)); }
public async Task <ResultData> DeleteConfigInfo([FromBody] List <ConfigInfo> infos) { if (infos.Where(x => x.IsSystem == "1").ToList().Count > 0) { return(ResultData.CreateResult("-1", "删除失败!存在不可删除的系统文件!", null)); } return(await ApiUtils.DeleteData(_dbContext, infos)); }
public async Task <ResultData> AddDataBaseInfo([FromBody] DataBaseInfo info) { //检查重复 if (_dbContext.Queryable <DataBaseInfo>().Where(x => x.BusinessType == info.BusinessType && (x.AccountSetName == info.AccountSetName || x.AccountSetNumber == info.AccountSetNumber)).Count() > 0) { return(ResultData.CreateResult("-1", "账套号或账套名称已存在", null)); } //获取配置文件信息 ConfigInfo configInfo = _dbContext.Queryable <ConfigInfo>().Where(x => x.ConfigName == "PublicDataAdapters.json" && x.CategoryType == info.BusinessType).First(); if (configInfo == null) { return(ResultData.CreateResult("-1", "配置文件不存在", null)); } //判断配置文件是否存在 string localPath = ApiUtils.GetLocalPath(_dbContext, configInfo.Guid, out string errorMessage); if (!string.IsNullOrEmpty(errorMessage)) { return(ResultData.CreateResult("-1", errorMessage, null)); } //生成加密信息 PublicDataAdapters publicDataAdapter = new PublicDataAdapters { DataAdapterType = info.DataBaseType, DataAdapterAlias = info.AccountSetNumber, IsDefaultDataAdapter = "0", DataAdapterAccountName = info.AccountSetName, DataAdapterInfo = $"Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST={info.ServerAddress})(PORT={info.Port})))(CONNECT_DATA=(SERVICE_NAME={info.DataBaseName})));User Id={info.UserName};Password={info.UserPassword};{info.ConnectionStringOther}".ToEncodeString() }; List <PublicDataAdapters> infos; using (StreamReader reader = new StreamReader(localPath)) { string json = await reader.ReadToEndAsync(); infos = JsonConvert.DeserializeObject <List <PublicDataAdapters> >(json); if (infos.Where(x => x.DataAdapterAccountName == publicDataAdapter.DataAdapterAccountName || x.DataAdapterAlias == publicDataAdapter.DataAdapterAlias).ToList().Count > 0) { return(ResultData.CreateResult("-1", "配置文件中账套名称或账套号已存在", null)); } infos.Add(publicDataAdapter); } //插入数据库 ResultData result = await ApiUtils.InsertData(_dbContext, info); //修改本地文件 using StreamWriter writer = new StreamWriter(localPath, false, Encoding.UTF8); await writer.WriteAsync(ApiUtils.ConvertJsonString(JsonConvert.SerializeObject(infos))); return(result); }
public async Task <ResultData> ConfigSynchronousByFileName([FromBody] ConfigSynchronousByFileNameRequest info) { try { if (info == null) { return(ResultData.CreateResult("-1", "同步失败", null)); } string fileName = info.FileName; List <ConfigInfo> configInfos = info.ConfigInfos; //获取服务器信息 List <ServerInfo> servers = _dbContext.Queryable <ServerInfo>().In(x => x.Guid, configInfos.Select(it => it.Guid).ToArray()).ToList(); if (servers == null || servers.Count == 0) { return(ResultData.CreateResult("-1", "未找到服务器信息", null)); } //获取要同步的配置文件信息 List <ConfigInfo> configs = _dbContext.Queryable <ConfigInfo>().Where(x => x.ConfigName == fileName).ToList(); if (configs == null || configs.Count == 0) { return(ResultData.CreateResult("-1", "未找到配置文件信息", null)); } StringBuilder stringBuilder = new StringBuilder(); foreach (var server in servers) { foreach (var config in configs) { string localPath = $"{Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)}/Configs{config.LocalPath}{config.ConfigName}".ToSystemPath(); string remotePath = $"{config.ConfigPath}{config.ConfigName}"; ResultData result = await SftpHelp.UpLoad(server.ServerAddress, server.Port.ToInt32(), server.UserName, server.Password, remotePath, localPath); if (result.Code != "0") { stringBuilder.Append($"配置文件:{config.ConfigName}同步至服务器:{server.ServerAddress}失败 错误原因{result.Msg} <br>"); } } } if (stringBuilder.Length > 0) { return(ResultData.CreateResult("1", stringBuilder.ToString(), null)); } return(ResultData.CreateSuccessResult()); } catch (Exception ex) { return(ResultData.CreateResult("-1", $"系统异常:{ex.Message}", null)); } }
public async Task <ResultData> UpdateTaskDetailInfo([FromBody] TasksDetail Task) { var insetresult = await _sqliteSql.Update <TasksDetail>().SetSource(Task).ExecuteAffrowsAsync(); if (insetresult > 0) { return(ResultData.CreateSuccessResult()); } else { return(ResultData.CreateResult("-1", "更新失败", null)); } }
public async Task <ResultData> UpdateScriptInfo([FromBody] Script script) { var insetresult = await _sqliteSql.Update <Script>().SetSource(script).ExecuteAffrowsAsync(); if (insetresult > 0) { return(ResultData.CreateSuccessResult()); } else { return(ResultData.CreateResult("-1", "更新失败", null)); } }
/// <summary> /// 更新 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="client"></param> /// <param name="data"></param> /// <returns></returns> public static async Task <ResultData> UpdateData <T>(SqlSugarClient client, T data) where T : BaseInfo, new() { int result = await client.Updateable(data).ExecuteCommandAsync(); if (result > 0) { return(ResultData.CreateSuccessResult()); } else { return(ResultData.CreateResult("-1", "更新失败", null)); } }
public async Task <ResultData> AddConfigInfo([FromBody] ConfigInfo info) { KeyValuePair <bool, string> keyValue = ApiUtils.CheckFuncParams(info, "ConfigName", "ConfigPath", "LocalPath", "CategoryType"); if (!keyValue.Key) { return(ResultData.CreateResult("-1", $"验证失败,字段{keyValue.Value}不能为空", null)); } info.CreateDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); info.IsSystem = "0"; return(await ApiUtils.InsertData(_dbContext, info)); }
/// <summary> /// 插入 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="client"></param> /// <param name="data"></param> /// <returns></returns> public static async Task <ResultData> InsertData <T>(SqlSugarClient client, T data) where T : BaseInfo, new() { data.Guid = Guid.NewGuid().ToString("N"); int result = await client.Insertable(data).ExecuteReturnIdentityAsync(); if (result > 0) { return(ResultData.CreateSuccessResult()); } else { return(ResultData.CreateResult("-1", "添加失败", null)); } }
public ResultData FTPTestConnection(string guid) { try { ServerInfo info = _dbContext.Queryable <ServerInfo>().Where(x => x.Guid == guid).First(); using var client = new SftpClient(info.ServerAddress, Convert.ToInt32(info.Port), info.UserName, info.Password); client.Connect(); client.Dispose(); return(ResultData.CreateSuccessResult()); } catch (Exception ex) { return(ResultData.CreateResult("-1", ex.Message, null)); } }
public async Task <ResultData> UpdateOrgInfo([FromBody] Organization organization) { var databaseInfo = organization.GetConnString(organization); organization.ConnectingString = databaseInfo.connString; var insetresult = await _sqliteSql.Update <Organization>().SetSource(organization).ExecuteAffrowsAsync(); if (insetresult > 0) { return(ResultData.CreateSuccessResult()); } else { return(ResultData.CreateResult("-1", "更新失败", null)); } }
public async Task <ResultData> UpdatePublicDataAdapters() { string guid = Request.Query["guid"]; string localPath = ApiUtils.GetLocalPath(_dbContext, guid, out string errorMessage); if (!string.IsNullOrEmpty(errorMessage)) { return(ResultData.CreateResult("-1", errorMessage, null)); } List <PublicDataAdapters> infos; using (StreamReader reader = new StreamReader(localPath)) { string json = await reader.ReadToEndAsync(); infos = JsonConvert.DeserializeObject <List <PublicDataAdapters> >(json); } using StreamReader bodyReader = new StreamReader(HttpContext.Request.Body, Encoding.UTF8); var data = await bodyReader.ReadToEndAsync(); JObject info = JObject.Parse(data); if (infos.Where(x => x.DataAdapterAlias != info["DataAdapterAlias"].ToNullString() && x.DataAdapterAccountName != info["DataAdapterAccountName"].ToNullString()).Where(x => x.DataAdapterAlias == info["NewDataAdapterAlias"].ToNullString() || x.DataAdapterAccountName == info["NewDataAdapterAccountName"].ToNullString()).ToList().Count > 0) { return(ResultData.CreateResult("-1", "账套名称或账套号已存在", null)); } foreach (var item in infos) { if (item.DataAdapterAlias != info["DataAdapterAlias"].ToNullString()) { continue; } item.DataAdapterAlias = info["NewDataAdapterAlias"].ToNullString(); item.DataAdapterType = info["NewDataAdapterType"].ToNullString(); item.DataAdapterInfo = info["NewDataAdapterInfo"].ToNullString(); item.DataAdapterAccountName = info["NewDataAdapterAccountName"].ToNullString(); } using StreamWriter writer = new StreamWriter(localPath, false, Encoding.UTF8); await writer.WriteAsync(ApiUtils.ConvertJsonString(JsonConvert.SerializeObject(infos))); return(ResultData.CreateSuccessResult()); }
/// <summary> /// Sftp下载文件 /// </summary> /// <param name="host"></param> /// <param name="port"></param> /// <param name="username"></param> /// <param name="password"></param> /// <param name="remotePath">远程文件路径</param> /// <param name="localPath">本地文件路径</param> public static async Task <ResultData> DownLoad(string host, int port, string username, string password, string remotePath, string localPath) { try { using var client = new SftpClient(host, port, username, password); client.Connect(); byte[] buffer = client.ReadAllBytes(remotePath); using FileStream fs = new FileStream(localPath, FileMode.Create); await fs.WriteAsync(buffer, 0, buffer.Length); return(ResultData.CreateSuccessResult()); } catch (Exception ex) { return(ResultData.CreateResult("-1", ex.Message, null)); } }
public async Task <ResultData> AddTaskInfo([FromBody] Tasks Task) { var insetresult = await _sqliteSql.Insert(new Tasks { Description = Task.Description, Name = Task.Name }).ExecuteAffrowsAsync(); if (insetresult > 0) { return(ResultData.CreateSuccessResult()); } else { return(ResultData.CreateResult("-1", "添加失败", null)); } }
public async Task <ResultData> AddTaskDetailInfo([FromBody] TasksDetail Task) { var insetresult = await _sqliteSql.Insert(new TasksDetail { ScriptCode = Task.ScriptCode, OrgCode = Task.OrgCode, TaskCode = Task.TaskCode }).ExecuteAffrowsAsync(); if (insetresult > 0) { return(ResultData.CreateSuccessResult()); } else { return(ResultData.CreateResult("-1", "添加失败", null)); } }
/// <summary> /// 删除 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="client"></param> /// <param name="data"></param> /// <returns></returns> public static async Task <ResultData> DeleteData <T>(SqlSugarClient client, List <T> data) where T : BaseInfo, new() { if (data == null || data.Count == 0) { return(ResultData.CreateResult("-1", "删除失败", null)); } int result = await client.Deleteable <T>().In(data.Select(x => x.Guid).ToArray()).ExecuteCommandAsync(); if (result > 0) { return(ResultData.CreateSuccessResult()); } else { return(ResultData.CreateResult("-1", "删除失败", null)); } }
public async Task <ResultData> DeleteRedisDev(string redisaddr, int redisdb, string searchkey) { #region 获取Redis的地址,连接实例 string redisConn = await GetRedisDBAddr(redisaddr); RedisHelper redisHelper = new RedisHelper(redisConn); #endregion var result = await redisHelper.ClearKeys(redisdb, searchkey); if (result.Item1) { return(ResultData.CreateSuccessResult("删除成功")); } else { return(ResultData.CreateResult("-1", $"删除键失败,失败信息:{result.Item2}", null)); } }
public async Task <ResultData> AddScriptInfo([FromBody] Script script) { var insetresult = await _sqliteSql.Insert(new Script { ScriptContent = script.ScriptContent, Description = script.Description, Name = script.Name }).ExecuteAffrowsAsync(); if (insetresult > 0) { return(ResultData.CreateSuccessResult()); } else { return(ResultData.CreateResult("-1", "添加失败", null)); } }
public async Task <ResultData> DeleteDataBaseInfo(List <DataBaseInfo> infos, string type) { //获取配置文件信息 ConfigInfo configInfo = _dbContext.Queryable <ConfigInfo>().Where(x => x.ConfigName == "PublicDataAdapters.json" && x.CategoryType == type).First(); if (configInfo == null) { return(ResultData.CreateResult("-1", "配置文件不存在", null)); } string localPath = ApiUtils.GetLocalPath(_dbContext, configInfo.Guid, out string errorMessage); if (!string.IsNullOrEmpty(errorMessage)) { return(ResultData.CreateResult("-1", errorMessage, null)); } List <PublicDataAdapters> datainfos; using (StreamReader reader = new StreamReader(localPath)) { string json = await reader.ReadToEndAsync(); datainfos = JsonConvert.DeserializeObject <List <PublicDataAdapters> >(json); } string[] dataAdapterAlias = infos.Select(x => x.AccountSetNumber).ToArray(); List <PublicDataAdapters> deleteData = datainfos.Where(x => dataAdapterAlias.Contains(x.DataAdapterAlias)).ToList(); foreach (var item in deleteData) { datainfos.Remove(item); } using (StreamWriter writer = new StreamWriter(localPath, false, Encoding.UTF8)) { await writer.WriteAsync(ApiUtils.ConvertJsonString(JsonConvert.SerializeObject(datainfos))); } return(ResultData.CreateSuccessResult()); }
/// <summary> /// Sftp上传文件 /// </summary> /// <param name="host"></param> /// <param name="port"></param> /// <param name="username"></param> /// <param name="password"></param> /// <param name="remotePath">远程文件路径</param> /// <param name="localPath">本地文件路径</param> public static async Task <ResultData> UpLoad(string host, int port, string username, string password, string remotePath, string localPath) { try { using var client = new SftpClient(host, port, username, password); client.Connect(); using FileStream fileStream = new FileStream(localPath, FileMode.Open); using MemoryStream fs = new MemoryStream(); await fileStream.CopyToAsync(fs); fs.Seek(0, SeekOrigin.Begin); client.BufferSize = 4 * 1024 * 1024; client.UploadFile(fs, remotePath); return(ResultData.CreateSuccessResult()); } catch (Exception ex) { return(ResultData.CreateResult("-1", ex.Message, null)); } }