当前位置: 首页 > news >正文

C# 根据MySQL数据库中数据,批量删除OSS上的垃圾文件

 protected void btndeleteTask_Click(object sender, EventArgs e){//获取标识为已删除数据,一次加载500条int countlocks = _goodsItemsApplication.CountAllNeedExecuteTask();int totalPagelocks = (countlocks + 500 - 1) / 500;//分批次处理for (int curentpage = 1; curentpage <= totalPagelocks; curentpage++){var listItems = _goodsItemsApplication.GetPageAllNeedExecuteTask(500, true);foreach (var item in listItems){//获取所有图片路径string[] pathlist = GetAllImagePathsByGoodId(item.ToString());foreach (var temp in pathlist){//删除IIS服务器上的文件DeleteFilesFromServer(temp);//删除远程阿里云OSS对象存储上的文件DeleteFilesFromRemoteServer(temp);} //删除相关表的数据逻辑代码就不贴上来,业务逻辑有点多,根据自己的业务自行发挥}}
}

/// <summary>/// 获取到所有的图片文件路径/// </summary>/// <param name="goodid"></param>/// <returns></returns>private string[] GetAllImagePathsByGoodId(string goodid){string[] arrayList = null;var goodsitem = _goodsItemsApplication.GetGoodsItemsInfoById(goodid);//商品主图var mainimgs = _goodsImgApplication.GetImgListByGoodsId(goodid);foreach (var tempimg in mainimgs){arrayList.AddRange(tempimg.showimg);//删除数据库中商品主图记录_goodsImgApplication.DelImgById(tempimg.Id.ToString());}//中图arrayList.AddRange(goodsitem.medium_img);//小图arrayList.AddRange(goodsitem.small_img);//详情图 var strArray = GetHtmlImageUrlList(goodsitem.description);foreach (var imgurl in strArray){arrayList.AddRange(imgurl);}return arrayList;}/// <summary>/// 服务器上删除站点文件/// </summary>private void DeleteFilesFromServer(string path){//获取全局配置信息var siteConfig = _dataCacheManager.GetConfigSiteGlobal();//特殊处理路径不包含goods字符串时,文件路径=服务器上静态文件目录+图片存储相对路径if (!path.Contains("goods")){path = siteConfig.relay_static_path + path;}//获取文件所处的绝对路径string filepath = Commons.GetMapPath(path);//判断路径是否存在if (Directory.Exists(filepath)){//删除文件File.Delete(path);}}/// <summary>/// 远程服务器删除文件/// </summary>private void DeleteFilesFromRemoteServer(string path){//获取全局配置信息var siteConfig = _dataCacheManager.GetConfigSiteGlobal();//初始化阿里云Oss客户端AlicloudOssClient ossClient = new AlicloudOssClient(new Uri(siteConfig.remote_oss_host),siteConfig.remote_oss_accesskey,siteConfig.remote_oss_accesssecret);//对象存储服务空间名称ossClient.bucketName = siteConfig.remote_oss_bucketname; //传入路径参数必须把路径的首个斜杠替换掉,否则阿里云Oss对象存储不识别,正确传参格式:123/123.jpg(说明:/123/123.jpg不识别)ossClient.DeleteObject(path.Substring(path.IndexOf("/") + 1));}/// <summary>/// 取得HTML中所有图片的 URL。/// </summary>/// <param name="sHtmlText">HTML代码</param>/// <returns>图片的URL列表</returns>private static string[] GetHtmlImageUrlList(string sHtmlText){// 定义正则表达式用来匹配 img 标签Regex regImg = new Regex(@"<img\b[^<>]*?\bsrc[\s\t\r\n]*=[\s\t\r\n]*[""']?[\s\t\r\n]*(?<imgUrl>[^\s\t\r\n""'<>]*)[^<>]*?/?[\s\t\r\n]*>", RegexOptions.IgnoreCase);// 搜索匹配的字符串MatchCollection matches = regImg.Matches(sHtmlText);int i = 0;string[] sUrlList = new string[matches.Count];// 取得匹配项列表foreach (Match match in matches)sUrlList[i++] = match.Groups["imgUrl"].Value.Substring(match.Groups["imgUrl"].Value.IndexOf('/', match.Groups["imgUrl"].Value.IndexOf("/") + 2));return sUrlList;}

如果代码对您有帮助,请一键三连支持原创,感谢老铁们的支持。

http://www.lryc.cn/news/421725.html

相关文章:

  • Vue3+Element-plus+setup使用vuemap/vue-amap实现高德地图API相关操作
  • Windows配置开机直达桌面并跳过锁屏登录界面在 Windows 10 中添加在启动时自动运行的应用
  • pythonUI自动化007::pytest的组成以及运行
  • 开放式耳机哪个品牌好用又实惠?五大口碑精品分享
  • 代码随想录算法训练营day39||动态规划07:多重背包+打家劫舍
  • WebSocket革新:用PHP实现实时Web通信
  • Python教程(十三):常用内置模块详解
  • Linux 下的进程状态
  • 【设计模式】六大基本原则
  • Selenium网页的滚动
  • 图算法系列1: 图算法的分类有哪些?(上)
  • 零样本学习——从多语言语料库数据中对未学习语言进行语音识别的创新技术
  • ViewStub的原理
  • 十一、Spring AOP
  • 【网络】IP的路径选择——路由控制
  • Unity动画模块 之 2D IK(反向动力学)
  • 关于kickstart自动安装脚本以及dhcp的设置
  • AWS云服务器选择最佳区域
  • Unity Android端截图保存并获取展示
  • linux高级编程——文件IO
  • windows C++-在 C++/WinRT 中使用委托处理事件(下)
  • 【实用工具】Stirling-PDF: 优质开源的PDF处理工具/编辑工具-含入门安装教程
  • opencv 深度图视差图可视化案例
  • Golang | Leetcode Golang题解之第330题按要求补齐数组
  • 算法训练(leetcode)第五十二天 | Bellman_ford 队列优化算法(SPFA)、BF算法判断负回路、BF之单源有限最短路(有负回路)
  • SpringBoot中整合RabbitMQ(测试+部署上线 最完整)
  • 算法板子:线性DP——算出三角形中的最大路径值、求最长上升子序列、求最长公共子序列
  • 【C++】值传递
  • 工业三防平板助力MES系统打造工厂移动式生产管理
  • keepalived+nginx实现的简单高可用故障转移