整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

c#上传文件附件时判断word、excel、txt等

c#上传文件附件时判断word、excel、txt等是否含有敏感词

C#中,如果你想在上传文件附件时检查Word、Excel、TXT等文档是否包含敏感信息,如身份证号、手机号等,你需要进行以下步骤:

  1. 读取文件内容:对于不同的文件格式,你需要使用不同的库来读取内容。例如,对于Word文档,你可以使用Microsoft.Office.Interop.Word或Aspose.Words库;对于Excel,可以使用Microsoft.Office.Interop.Excel或EPPlus、ClosedXML等库;对于TXT文件,直接使用文件流读取即可。
  2. 正则表达式匹配:使用正则表达式来匹配身份证号、手机号等敏感信息。这些正则表达式需要根据你的具体需求来定制。
  3. 扫描文件内容:遍历读取到的文件内容,使用正则表达式进行匹配,查找可能的敏感信息。
  4. 处理结果:如果发现敏感信息,你可以根据需要采取相应的措施,如阻止文件上传、通知用户、记录日志等。

下面是一个简化的示例代码,展示了如何使用C#读取一个TXT文件并检查是否包含身份证号或手机号:

csharpusing System;
using System.IO;
using System.Text.RegularExpressions;

public class SensitiveInfoChecker
{
    // 正则表达式,用于匹配身份证号(这里只是一个简化的例子)
    private static readonly Regex idCardRegex=new Regex(@"^\d{17}[\dXx]$");

    // 正则表达式,用于匹配手机号(简化版,实际中可能更复杂)
    private static readonly Regex phoneRegex=new Regex(@"^\d{11}$");

    // 检查文件是否包含敏感信息
    public static bool CheckFileForSensitiveInfo(string filePath)
    {
        try
        {
            string fileContent=File.ReadAllText(filePath);

            // 检查身份证号
            if (idCardRegex.IsMatch(fileContent))
            {
                Console.WriteLine("文件包含身份证号!");
                return true;
            }

            // 检查手机号
            if (phoneRegex.IsMatch(fileContent))
            {
                Console.WriteLine("文件包含手机号!");
                return true;
            }

            return false;
        }
        catch (Exception ex)
        {
            Console.WriteLine("读取文件时出错: " + ex.Message);
            return false;
        }
    }
}

// 使用示例
class Program
{
    static void Main()
    {
        string filePath=@"C:\path\to\your\file.txt";
        bool containsSensitiveInfo=SensitiveInfoChecker.CheckFileForSensitiveInfo(filePath);

        if (containsSensitiveInfo)
        {
            Console.WriteLine("文件包含敏感信息,请检查!");
        }
        else
        {
            Console.WriteLine("文件未包含敏感信息。");
        }
    }
}

请注意,这个例子仅适用于TXT文件,并且正则表达式非常基础。对于Word和Excel文件,你需要使用相应的库来读取内容,并可能需要更复杂的正则表达式来准确匹配身份证号或手机号。

此外,对于更复杂的场景,你可能还需要考虑文件编码问题、文件内容格式问题(如HTML、富文本等),以及可能的性能问题(如果文件非常大)。在这些情况下,你可能需要更高级的文本处理技术或使用专门的文本解析库。

TML5实现大文件分片上传思路,利用HTML5分片上传超大文件思路,WEBUPLOADER 支持 超大上G,多附件上传,JS 大文件分割/分片上传,百度WEBUPLOADER上传视频等大文件,WEBUPLOAD组件实现文件上传功能和下载功能,JS大文件切片上传,断点续传实现DEMO,前端上传大文件的解决方案,前端上传大文件处理(切片、断点续传),前端大文件上传优化方案——分片上传,vue大文件上传解决方案,vue大文件上传解决方案10G,vue大文件上传解决方案50G,vue大文件上传解决方案100G,html5如何实现大文件断点续传、秒传,

java如何实现大文件断点续传、秒传,SpringBoot如何实现大文件断点续传、秒传,SpringMVC如何实现大文件断点续传、秒传,SpringCloud如何实现大文件断点续传、秒传,

webuploader如何实现大文件断点续传、秒传,百度webuploader如何实现大文件断点续传、秒传,html5实现大文件断点续传、秒传,vue如何实现大文件断点续传、秒传,前端如何实现大文件断点续传、秒传,JavaScript如何实现大文件断点续传、秒传,

html5大文件断点续传、秒传解决方案,html5大文件断点续传、加密上传解决方案,html5大文件断点续传、加密存储解决方案,html5大文件断点续传分片解决方案,html5大文件断点续传分块解决方案,html5大文件断点续传分割解决方案,html5大文件断点续传切割解决方案,

在网上找过相关的资料,论坛里面也有网友交流过,但是都不太令人满意。

给政府做的一个项目。实际上客户那边对具体的技术实际不关心。

研发部门的同事调研过百度的webuploader这个组件,发现他实际上就是对Flash和HTML5进行了一个封装,本质还是调的HTML5的API,之前在项目中也用过,尝试过,但是最终都不太满意,一个是兼容性非常差,说的是兼容IE,但是在IE用的是Flash,在很多用户的电脑上用不了,卡顿崩溃发生的太频繁,文件上传的数量一多比如几千个,前端页面就开始卡了,用户体验非常差。这些问题研发部的同事都向百度反应过,但是百度webuploader那边一直没人回,基本上没人管,领导说要求付费提供技术支持,那边也是没人回,联系不上他们任何人。

webuploader这边连个开发人员都联系不到,这个是怎么回事?

搞的我们领导现在基本上不怎么考虑国内这些免费开源的项目,研发部门的同事称这些项目为免费坑人项目。

用户上传的文件比较大,有20G左右,直接用HTML传的话容易失败,服务器也容易出错,需要分片,分块,分割上传。也就是将一个大的文件分成若干个小文件块来上传,另外就是需要实现秒传功能和防重复功能,秒传就是用户如果上传过这个文件,那么直接在数据库中查找记录就行了,不用再上传一次,节省时间,实现的思路是对文件做MD5计算,将MD5值保存到数据库,算法可以用MD5,或者CRC,或者SHA1,这个随便哪个算法都行。

分片还需要支持断点续传,现在HTML5虽然提供了信息记录功能,但是只支持到了会话级,也就是用户不能关闭浏览器,也不能清空缓存。但是有的政府单位上传大文件,传了一半下班了,明天继续传,电脑一关结果进度信息就丢失了,这个是他们的一个痛点。

切片的话还有一点就是在服务器上合并,一个文件的所有分片数据上传完后需要在服务器端进行合并操作。

聊下HTML5吧,怎么说呢,HTML5也就是chrome提供的一个API来实现文件分片,反正基本的需求,小文件用是能用,但是用起来多多少少还是有点别扭,扩展性,安全性,稳定性用户那阵都不太满意,关键是什么,我们是没办法对HTML5进行扩展,个性化和定制化开发的,基本上被谷歌给限制死了,这也是现在国产化的意义,希望能够打破这个限制。不然公司的一些产品和业务不太好开展,总不能用户提个需求,我们就说谷歌Chrome没提供API,所我们就无法开发吧。这不是跟客户扯呢。

功能的话支持20G文件上传和续传,支持秒传,支持文件夹上传,支持在服务端保存文件夹层级结构,支持将文件夹层级结构信息保存到数据库中,支持下载时能够将文件夹层级结构下载下来,支持下载文件夹,下载文件夹支持断点续传,支持VUE2,VUE3,React,支持IE,Chrome和信创国产化环境,比如银河麒麟,统信UOS,龙芯,支持加密传输,包括加密上传,加密下载,加密算法支持国密SM4,支持云对象存储,比如华为云,阿里云,腾讯云,七牛云,AWS,MinIO,FastDFS,需要提供手机,QQ,微信,邮箱等联系方式,提供7*24小时技术支持,提供长期技术支持和维护服务,提供远程1对1技术指导,提供二次开发指导,提供文档教程,提供视频教程。1.下载示例

https://gitee.com/xproer/up6-vue-cli



将up6组件复制到项目中

示例中已经包含此目录



1.引入up6组件



2.配置接口地址

接口地址分别对应:文件初始化,文件数据上传,文件进度,文件上传完毕,文件删除,文件夹初始化,文件夹删除,文件列表

参考:http://www.ncmem.com/doc/view.aspx?id=e1f49f3e1d4742e19135e00bd41fa3de



3.处理事件



启动测试



启动成功



效果



数据库



源码工程文档:https://drive.weixin.qq.com/s?k=ACoAYgezAAw1dWofra

源码报价单:https://drive.weixin.qq.com/s?k=ACoAYgezAAwoiul8gl

OEM版报价单:https://drive.weixin.qq.com/s?k=ACoAYgezAAwuzp4W0a

控件源码下载:https://drive.weixin.qq.com/s?k=ACoAYgezAAwbdKCskc

译自: https://changelog.complete.org/archives/9865-emacs-2-introducing-org-mode

作者: John Goerzen

译者: Yuqi Liu

在我 Emacs 系列中的 第一篇文章 里,我介绍了我在用了几十年的 vim 后转向了 Emacs,org 模式就是我为什么这样做的原因。

org 模式的精简和高效真的震惊了我,它真的是个“杀手”应用。

所以,org 模式到底是什么呢?

这是我昨天写的:

它是一个组织信息的平台,它的主页上这样写着:“一切都是纯文本:org 模式用于记笔记、维护待办事项列表、计划项目和使用快速有效的纯文本系统编写文档。”

这是事实,但并不是很准确。org 模式是一个你用来组织事务的小工具。它有一些非常合理的默认设置,但也允许你自己定制。

主要突出在这几件事上:

  • 维护待办事项列表:项目可以分散在 org 文件中,包含附件,有标签、截止日期、时间表。有一个方便的“日程”视图,显示需要做什么。项目也可以重复。
  • 编写文档:org 模式有个特殊的功能来生成 HTML、LaTeX、幻灯片(用 LaTeX beamer)和其他所有的格式。它也支持直接在缓冲区中运行和以 Emacs 所支持的的语言进行 文学编程(literate programming)。如果你想要深入了解这项功能的话,参阅 这篇文学式 DevOps 的文章 。而 整个 Worg 网站 是用 org 模式开发的。
  • 记笔记:对,它也能做笔记。通过全文搜索,文件的交叉引用(类似 wiki),UUID,甚至可以与其他的系统进行交互(通过 Message-ID 与 mu4e 交互,通过 ERC 的日志等等……)。

入门

我强烈建议去阅读 Carsten Dominik 关于 org 模式的一篇很棒的 Google 讲话 。那篇文章真的很赞。

在 Emacs 中带有 org 模式,但如果你想要个比较新的版本的话,Debian 用户可以使用命令 apt-get install org-mode 来更新,或者使用 Emacs 的包管理系统命令 M-x package-install RET org-mode RET。

现在,你可能需要阅读一下 org 模式的精简版教程中的 导读部分 ,特别注意,你要设置下 启动部分 中提到的那些键的绑定。

一份好的教程

我会给出一些好的教程和介绍的链接,但这篇文章不会是一篇教程。特别是在本文末尾,有两个很不错的视频链接。

我的一些配置

我将在这里记录下一些我的配置并介绍它的作用。你没有必要每行每句将它拷贝到你的配置中 —— 这只是一个参考,告诉你哪些可以配置,要怎么在手册中查找,或许只是一个“我现在该怎么做”的参考。

首先,我将 Emacs 的编码默认设置为 UTF-8。

(prefer-coding-system 'utf-8)

(set-language-environment "UTF-8")

org 模式中可以打开 URL。默认的,它会在 Firefox 中打开,但我喜欢用 Chromium。

(setq browse-url-browser-function 'browse-url-chromium)

我把基本的键的绑定和设为教程里的一样,再加上 M-RET 的操作的配置。

(global-set-key "\C-cl" 'org-store-link)

(global-set-key "\C-ca" 'org-agenda)

(global-set-key "\C-cc" 'org-capture)

(global-set-key "\C-cb" 'org-iswitchb)

(setq org-M-RET-may-split-line nil)

捕获配置

我可以在 Emacs 的任何模式中按 C-c c,按下后它就会 帮我捕获某些事 ,其中包括一个指向我正在处理事务的链接。

你可以通过定义 捕获模板 来配置它。我将保存两个日志文件,作为会议、电话等的通用记录。一个是私人用的,一个是办公用的。如果我按下 C-c c j,它就会帮我捕获为私人项. 下面包含 %a 的配置是表示我当前的位置(或是我使用 C-c l 保存的链接)的链接。

(setq org-default-notes-file "~/org/tasks.org")

(setq org-capture-templates

'(

("t" "Todo" entry (file+headline "inbox.org" "Tasks")

"* TODO %?\n %i\n %u\n %a")

("n" "Note/Data" entry (file+headline "inbox.org" "Notes/Data")

"* %? \n %i\n %u\n %a")

("j" "Journal" entry (file+datetree "~/org/journal.org")

"* %?\nEntered on %U\n %i\n %a")

("J" "Work-Journal" entry (file+datetree "~/org/wjournal.org")

"* %?\nEntered on %U\n %i\n %a")

))

(setq org-irc-link-to-logs t)

我喜欢通过 UUID 来建立链接,这让我在文件之间移动而不会破坏位置。当我要 org 存储一个链接目标以便将来插入时,以下配置有助于生成 UUID。

(require 'org-id)

(setq org-id-link-to-org-use-id 'create-if-interactive)

议程配置

我喜欢将星期天作为一周的开始,当我将某件事标记为完成时,我也喜欢记下时间。

(setq org-log-done 'time)

(setq org-agenda-start-on-weekday 0)

文件归档配置

在这我将配置它,让它知道在议程中该使用哪些文件,而且在纯文本的搜索中添加一点点小功能。我喜欢保留一个通用的文件夹(我可以从其中移动或“重新归档”内容),然后将个人和工作项的任务、日志和知识库分开。

(setq org-agenda-files (list "~/org/inbox.org"

"~/org/email.org"

"~/org/tasks.org"

"~/org/wtasks.org"

"~/org/journal.org"

"~/org/wjournal.org"

"~/org/kb.org"

"~/org/wkb.org"

))

(setq org-agenda-text-search-extra-files

(list "~/org/someday.org"

"~/org/config.org"

))

(setq org-refile-targets '((nil :maxlevel . 2)

(org-agenda-files :maxlevel . 2)

("~/org/someday.org" :maxlevel . 2)

("~/org/templates.org" :maxlevel . 2)

)

)

(setq org-outline-path-complete-in-steps nil) ; Refile in a single go

(setq org-refile-use-outline-path 'file)

外观配置

我喜欢一个较漂亮的的屏幕。在你开始习惯 org 模式之后,你可以试试这个。

(add-hook 'org-mode-hook

(lambda ()

(org-bullets-mode t)))

(setq org-ellipsis "?")

下一篇

希望这篇文章展示了 org 模式的一些功能。接下来,我将介绍如何定制 TODO 关键字和标记、归档旧任务、将电子邮件转发到 org 模式,以及如何使用 git 在不同电脑之间进行同步。

你也可以查看 本系列的所有文章列表 。


via: https://changelog.complete.org/archives/9865-emacs-2-introducing-org-mode

作者: John Goerzen 选题: lujun9972 译者: oneforalone 校对: wxy

本文由 LCTT 原创编译, Linux中国 荣誉推出

点击“了解更多”可访问文内链接