C#中,如果你想在上传文件附件时检查Word、Excel、TXT等文档是否包含敏感信息,如身份证号、手机号等,你需要进行以下步骤:
下面是一个简化的示例代码,展示了如何使用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 模式是一个你用来组织事务的小工具。它有一些非常合理的默认设置,但也允许你自己定制。
主要突出在这几件事上:
我强烈建议去阅读 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中国 荣誉推出
*请认真填写需求信息,我们会在24小时内与您取得联系。