上传文件附件时判断word、excel、txt等是否含有敏感词如身份证号,手机号等

这篇具有很好参考价值的文章主要介绍了上传文件附件时判断word、excel、txt等是否含有敏感词如身份证号,手机号等。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

上传附件判断word、excel、txt等文档中是否含有敏感词如身份证号,手机号等,其它检测如PDF,图片(OCR)等可以自行扩展。

互联网项目中,展示的数据中不能包含个人信息等敏感信息。判断word中是否包含手机号,word正文中是否包含身份证号等敏感信息,通过正则表达式判断匹配手机号,身份证号,以下做为参考。会出现碰撞错误,碰撞不准确等情况,不在本文范围。

开发语言C#,框架asp.net webform。由于传文件是做的判断,所以这里是判断数据流HttpPostedFile postedFile中的内容。通过load本地文件,本文不做过多介绍。

一、word校验身份证号,手机号

获取word中内容最初用的是npoi插件,office的插件导入导出以前用的比较多,npoi只获取docx文档文本,npoi获取doc后缀有问题,又找的Spire.Doc。可以都使用后者,笔者只简单测试了doc后缀,其它复杂情况没具体测试。有时间的推荐Spire,因为附件中pdf也是一个大项,刚好有对应的using Spire.Pdf;

using NPOI.XWPF.UserModel;
using Spire.Doc;
using Spire.Doc.Documents;

 public class WordToTextConvert
 {
     /// <summary>
     /// docx提取成纯文本
     /// </summary>
     /// <param name="file"></param>
     /// <returns></returns>
     public static string ExtractTextFromWord(Stream wordFileStream,string fileExt)
     {
         using (wordFileStream)
         {
             XWPFDocument doc = new XWPFDocument(wordFileStream);

             using (StringWriter writer = new StringWriter())
             {
                 string text = "";
                 foreach (var para in doc.Paragraphs)
                 {
                     text += para.Text+" ";
                 }

                 foreach (XWPFTable table in doc.Tables)
                 {
                     foreach (XWPFTableRow row in table.Rows)
                     {
                         foreach (XWPFTableCell cell in row.GetTableCells())
                         {
                             text += cell.GetText() + " ";
                         }
                     }
                     text += "\r\n";
                 }
                 return text;
             }
         }
     }
     /// <summary>
     /// doc后缀
     /// </summary>
     /// <param name="wordFileStream"></param>
     /// <param name="fileExt"></param>
     /// <returns></returns>
     public static string ExtractTextFromWordDoc(Stream wordFileStream, string fileExt)
     {
         Spire.Doc.Document doc = new Spire.Doc.Document(wordFileStream);
         Spire.Doc.Table table = doc.Sections[0].Tables[0] as Table;
         string text = doc.GetText()+" ";//获取word文档中的文本
         //纯表格可以使用以下方法
         //遍历表格内容
         for (int i = 0; i < table.Rows.Count; i++)
         {
             var cellsindex = table.Rows[i].Cells.Count;
             for (int j = 0; j < cellsindex; j++)
             {
                 TableCell cell = table.Rows[i].Cells[j];
                 foreach (Paragraph paragraph in cell.Paragraphs)
                 {
                     text += paragraph.Text+" ";
                 }
             }

             text += "\r\n";
         }
         return text;
     }
 }

二、EXCEL校验校验身份证号,手机号

npoi处理excel时要判断后缀,xls和xlsx使用的类不同

public class ExcelToTextConvert
{
    /// <summary>
    /// 提取成纯文本
    /// </summary>
    /// <param name="file"></param>
    /// <returns></returns>
    public static string ExtractTextFromExcel(Stream excelFileStream,string fileExt)
    {
        using (excelFileStream)
        {
            string text = "";

            IWorkbook workbook=null;
            if (fileExt == "xls")
            {
                workbook = new HSSFWorkbook(excelFileStream);
            }
            if (fileExt == "xlsx")
            {
                workbook = new XSSFWorkbook(excelFileStream);
            }
            ISheet sheet = workbook.GetSheetAt(0);
            if (sheet != null)
            {
                foreach (IRow row in sheet)
                {
                    foreach (ICell cell in row)
                    {
                        switch (cell.CellType)
                        {
                            case CellType.String:
                                text += cell.StringCellValue + " ";
                                break;
                            case CellType.Numeric:
                                text += cell.NumericCellValue + " ";
                                break;
                        }
                    }
                    text += "\r\n";
                }
            }
            return text;
        }
    }
}

三、txt校验校验身份证号,手机号

获取文件流的内容,文本文件可以直接读取。方法如下:

if ("txt".Contains(fileExt))
{
    // 确保文件不为null并且有数据
    if (postedFile != null && postedFile.ContentLength > 0)
    {
        using (StreamReader reader = new StreamReader(postedFile.InputStream))
        {
            // 读取文件内容并返回
            string readContent = reader.ReadToEnd();
            bool hasMobile = ContainsMobileNumber(readContent);
            if (hasMobile)
            {
                return "{\"status\": 0, \"msg\": \"内容中不可含有手机号!\"}";
            }
            bool hasId = ContainsIdNumber(readContent);
            if (hasId)
            {
                return "{\"status\": 0, \"msg\": \"内容中不可含有身份证号!\"}";
            }
        }
    }
}

 四、正则校验字符串中是否包含身份证号,手机号等

public static bool ContainsMobileNumber(string text)
{
    // 中国大陆手机号码正则表达式
    string pattern = @"1[3-9]\d{9}";
    return Regex.IsMatch(text, pattern);
}

public static bool ContainsIdNumber(string text)
{
    // 中国大陆身份证号正则表达式
    string pattern = @"[1-9]\d{5}(18|19|20)?\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}(\d|[Xx])";
    return Regex.IsMatch(text, pattern);
}

五、读取pdf方法,未做项目验证,请自行搜索相关方法

供参考:读取显示PDF需要借助PDF库,国内Spire.PDF可以读取PDF内容,包括文本,图片以及表格,你可以通过NuGet搜索安装

上传文件附件时判断word、excel、txt等是否含有敏感词如身份证号,手机号等上传文件附件时判断word、excel、txt等是否含有敏感词如身份证号,手机号等
  1 using Spire.Pdf;
  2 using Spire.Pdf.Texts;
  3 using System.IO;
  4 
  5 using System.Text;
  6 
  7 namespace ExtractText
  8 
  9 {
 10 
 11 internal class Program
 12 
 13 {
 14 
 15 static void Main(string[] args)
 16 
 17 {
 18 
 19 //创建一个 PdfDocument 对象
 20 
 21 PdfDocument doc = new PdfDocument();
 22 //加载PDF文件
 23 
 24 doc.LoadFromFile("AI数字人.pdf");
 25 
 26 StringBuilder sb = new StringBuilder();
 27 
 28 foreach (PdfPageBase page in doc.Pages)
 29 
 30 {
 31 
 32 //创建一个PdfTextExtractot 对象
 33 
 34 PdfTextExtractor textExtractor = new PdfTextExtractor(page);
 35 
 36 //创建一个 PdfTextExtractOptions 对象
 37 
 38 PdfTextExtractOptions extractOptions = new PdfTextExtractOptions();
 39 
 40 //将 isExtractAllText 设置为true
 41 
 42 extractOptions.IsExtractAllText = true;
 43 
 44 //从页面中提取文本
 45 
 46 sb.AppendLine(textExtractor.ExtractText(extractOptions));
 47 
 48 }
 49 
 50 //将提取的文本写入 TXT 文件
 51 
 52 File.WriteAllText("提取指定页面文本.txt", sb.ToString());
 53 
 54 }
 55 
 56 }
 57 
 58 }
 59 
 60 读取表格内容:
 61 
 62 using Spire.Pdf;
 63 
 64 using Spire.Pdf.Utilities;
 65 
 66 using System.IO;
 67 
 68 using System.Text;
 69 
 70 namespace ExtractTable{
 71 class Program
 72 {
 73 static void Main(string[] args)
 74 {
 75 //实例化PdfDocument类的对象
 76 PdfDocument pdf = new PdfDocument();
 77 //加载PDF文档
 78 pdf.LoadFromFile("sample.pdf");
 79 //创建StringBuilder类的对象
 80 StringBuilder builder = new StringBuilder();
 81 //实例化PdfTableExtractor类的对象
 82 PdfTableExtractor extractor = new PdfTableExtractor(pdf);
 83 //声明PdfTable类的表格数组
 84 PdfTable[] tableLists;
 85 //遍历PDF页面
 86 for (int pageIndex = 0; pageIndex < pdf.Pages.Count; pageIndex++)
 87 {
 88 //从页面提取表格
 89 tableLists = extractor.ExtractTable(pageIndex);
 90 //判断表格列表是否为空
 91 if (tableLists != null && tableLists.Length > 0)
 92 {
 93 //遍历表格
 94 foreach (PdfTable table in tableLists)
 95 {
 96 //获取表格中的行和列数
 97 int row = table.GetRowCount();
 98 int column = table.GetColumnCount();
 99 //遍历表格行和列
100 for (int i = 0; i < row; i++)
101 {
102 for (int j = 0; j < column; j++)
103 {
104 //获取行和列中的文本
105 string text = table.GetText(i, j);
106 //写入文本到StringBuilder容器
107 builder.Append(text + " ");
108 }
109 builder.Append("\r\n");
110 }
111 }
112 }
113 }
114 //保存提取的表格内容为.txt文档
115 File.WriteAllText("ExtractedTable.txt", builder.ToString());
116 }
117 }
118 
119 }
读取PDF的内容,文本、表格、图片

 文章来源地址https://www.toymoban.com/news/detail-838912.html

总结:尽一切合理努力保护用户个人信息, 并对个人信息进行保护。为防止用户个人信息在意外的、未经授权的情况下泄漏。

压缩包内容校验基本方法同上,先解压缩,再逐文件处理。本文直接判断有敏感词,不让上传,也可以通过正则把信息替换成****后再转存,这里不再展开。

如有专门的更好用的插件请留言告知讨论,避免重复造轮子。

 

到了这里,关于上传文件附件时判断word、excel、txt等是否含有敏感词如身份证号,手机号等的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C++(11):判断tuple是否含有某个类型

    有的时候需要判断tuple中是否有个某个类型,可以借助变长模板的递归调用方式进行检查: C++(11):变长模板_变长模板参数 c++11-CSDN博客 另外还使用了true_type和false_type:

    2024年02月04日
    浏览(35)
  • Python - 读取pdf、word、excel、ppt、csv、txt文件提取所有文本

    本文对使用python读取pdf、word、excel、ppt、csv、txt等常用文件,并提取所有文本的方法进行分享和使用总结。 可以读取不同文件的库和方法当然不止下面分享的这些,本文的代码主要目标都是:方便提取文件中所有文本的实现方式。 这些库的更多使用方法,请到官方文档中查

    2024年02月13日
    浏览(38)
  • 【Qt】QString怎么判断是否含有某个字符串

    2023年10月29日,周日晚上 QString怎么判断是否含有某一字符串? 比如我想知道QString中是否含有\\\"connectToHost error\\\" 要判断一个 QString 是否包含特定的子字符串,可以使用  QString  类的  contains()  方法。 下面是使用  contains()  方法来判断一个 QString 是否包含特定子字符串的示例

    2024年02月06日
    浏览(67)
  • JavaScript判断数组对象是否含有某个值的方法(6种)

    文章内容 文章链接 vue3 antd table表格的增删改查(一) input输入框根据搜索【后台管理系统纯前端filter过滤】 https://blog.csdn.net/XSL_HR/article/details/128072584?spm=1001.2014.3001.5501 vue3 antd table表格的增删改查(二) input输入框根据搜索【后台管理系统 请求后端接口 前后端

    2024年02月06日
    浏览(47)
  • 使用js判断list中是否含有某个字符串,存在则删除,

    显示上图中使用了两种方式, 左边的是filter将不等于userCode的元素筛选出来组成一个新的list, 但是上面这个方法在 IE浏览器中不支持 , 所以改成了右边的方法,使用splice: splice传入两个参数,第一个参数是要删除的元素的索引位置,第二个是从这个索引往后删除几个;

    2024年01月24日
    浏览(44)
  • Java判断List集合中的对象是否包含有某一元素

    关于以下方法,直接可以在自己项目创建一个类,然后进行测试使用!文本末尾也提供了每个方法的运行结果,供大家参考使用! 文章大量使用到了Java8当中的Lambda表达式,以及stream流相关基础知识。如果您用的不熟,没关系,可以直接复制下面的方案然后进行套着使用即可

    2024年02月11日
    浏览(61)
  • vue实战--vue+elementUI实现多文件上传+预览(word/PDF/图片/docx/doc/xlxs/txt)

        最近在做vue2.0+element UI的项目中遇到了一个需求:需求是多个文件上传的同时实现文件的在线预览功能。需求图如下:     看到这个需求的时候,小栗脑袋一炸。并不知道该如何下手,之前的实践项目中也并没有遇到相似的功能。因此也废了一番功夫想要实现这样一个

    2024年01月23日
    浏览(53)
  • 微信小程序上传文件(可传 word、excel、ppt、视频、图片……)

    近期做技术调研时发现微信官方支持文件上传了,这里记录一下 官方 API:wx.chooseMessageFile(Object object) 交互:从微信聊天里选择文件(选一个好友/群聊,从你们聊天记录里的文件里选) 点红框是预览,点右上角圆圈才是选中(昨天做技术调研时点红圈部分是预览,搞得我还以

    2024年02月11日
    浏览(57)
  • 用Aspose-Java免费实现 PDF、Word、Excel、Word互相转换并将转换过得文件上传OSS,返回转换后的文件路径

    github代码地址 https://github.com/Tom-shushu/work-study 接口文档有道云 https://note.youdao.com/s/GShGsYE8 接口文档离线版本 https://files.cnblogs.com/files/Tom-shushu/%E6%8E%A5%E5%8F%A3%E6%96%87%E6%A1%A3.rar?t=1682958343download=true 为什么发布这篇文档转换的文章呢?因为上周我要将一个PDF转换为Word,结果百度谷歌

    2024年02月02日
    浏览(40)
  • #MATLAB 产生一均匀分布在(-5,5)随机阵(50x2),精确到小数点后一位,并判断该矩阵中是否含有0元素

            产生一均匀分布在(-5,5)随机阵(50x2),精确到小数点后一位,并判断该矩阵中是否含有0元素 题解: 输出示例1:  a =    -3.9000    3.8000    -0.4000    3.5000     2.2000    4.8000    -4.8000   -4.6000     4.6000   -4.7000     1.7000    3.8000    -4.7000    0.3000     1.3000   -1.

    2024年02月04日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包