Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
C#中,如果你想在上傳文件附件時(shí)檢查Word、Excel、TXT等文檔是否包含敏感信息,如身份證號(hào)、手機(jī)號(hào)等,你需要進(jìn)行以下步驟:
下面是一個(gè)簡(jiǎn)化的示例代碼,展示了如何使用C#讀取一個(gè)TXT文件并檢查是否包含身份證號(hào)或手機(jī)號(hào):
csharpusing System;
using System.IO;
using System.Text.RegularExpressions;
public class SensitiveInfoChecker
{
// 正則表達(dá)式,用于匹配身份證號(hào)(這里只是一個(gè)簡(jiǎn)化的例子)
private static readonly Regex idCardRegex=new Regex(@"^\d{17}[\dXx]$");
// 正則表達(dá)式,用于匹配手機(jī)號(hào)(簡(jiǎn)化版,實(shí)際中可能更復(fù)雜)
private static readonly Regex phoneRegex=new Regex(@"^\d{11}$");
// 檢查文件是否包含敏感信息
public static bool CheckFileForSensitiveInfo(string filePath)
{
try
{
string fileContent=File.ReadAllText(filePath);
// 檢查身份證號(hào)
if (idCardRegex.IsMatch(fileContent))
{
Console.WriteLine("文件包含身份證號(hào)!");
return true;
}
// 檢查手機(jī)號(hào)
if (phoneRegex.IsMatch(fileContent))
{
Console.WriteLine("文件包含手機(jī)號(hào)!");
return true;
}
return false;
}
catch (Exception ex)
{
Console.WriteLine("讀取文件時(shí)出錯(cuò): " + 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("文件包含敏感信息,請(qǐng)檢查!");
}
else
{
Console.WriteLine("文件未包含敏感信息。");
}
}
}
請(qǐng)注意,這個(gè)例子僅適用于TXT文件,并且正則表達(dá)式非常基礎(chǔ)。對(duì)于Word和Excel文件,你需要使用相應(yīng)的庫(kù)來(lái)讀取內(nèi)容,并可能需要更復(fù)雜的正則表達(dá)式來(lái)準(zhǔn)確匹配身份證號(hào)或手機(jī)號(hào)。
此外,對(duì)于更復(fù)雜的場(chǎng)景,你可能還需要考慮文件編碼問(wèn)題、文件內(nèi)容格式問(wèn)題(如HTML、富文本等),以及可能的性能問(wèn)題(如果文件非常大)。在這些情況下,你可能需要更高級(jí)的文本處理技術(shù)或使用專門(mén)的文本解析庫(kù)。
TML5實(shí)現(xiàn)大文件分片上傳思路,利用HTML5分片上傳超大文件思路,WEBUPLOADER 支持 超大上G,多附件上傳,JS 大文件分割/分片上傳,百度WEBUPLOADER上傳視頻等大文件,WEBUPLOAD組件實(shí)現(xiàn)文件上傳功能和下載功能,JS大文件切片上傳,斷點(diǎn)續(xù)傳實(shí)現(xiàn)DEMO,前端上傳大文件的解決方案,前端上傳大文件處理(切片、斷點(diǎn)續(xù)傳),前端大文件上傳優(yōu)化方案——分片上傳,vue大文件上傳解決方案,vue大文件上傳解決方案10G,vue大文件上傳解決方案50G,vue大文件上傳解決方案100G,html5如何實(shí)現(xiàn)大文件斷點(diǎn)續(xù)傳、秒傳,
java如何實(shí)現(xiàn)大文件斷點(diǎn)續(xù)傳、秒傳,SpringBoot如何實(shí)現(xiàn)大文件斷點(diǎn)續(xù)傳、秒傳,SpringMVC如何實(shí)現(xiàn)大文件斷點(diǎn)續(xù)傳、秒傳,SpringCloud如何實(shí)現(xiàn)大文件斷點(diǎn)續(xù)傳、秒傳,
webuploader如何實(shí)現(xiàn)大文件斷點(diǎn)續(xù)傳、秒傳,百度webuploader如何實(shí)現(xiàn)大文件斷點(diǎn)續(xù)傳、秒傳,html5實(shí)現(xiàn)大文件斷點(diǎn)續(xù)傳、秒傳,vue如何實(shí)現(xiàn)大文件斷點(diǎn)續(xù)傳、秒傳,前端如何實(shí)現(xiàn)大文件斷點(diǎn)續(xù)傳、秒傳,JavaScript如何實(shí)現(xiàn)大文件斷點(diǎn)續(xù)傳、秒傳,
html5大文件斷點(diǎn)續(xù)傳、秒傳解決方案,html5大文件斷點(diǎn)續(xù)傳、加密上傳解決方案,html5大文件斷點(diǎn)續(xù)傳、加密存儲(chǔ)解決方案,html5大文件斷點(diǎn)續(xù)傳分片解決方案,html5大文件斷點(diǎn)續(xù)傳分塊解決方案,html5大文件斷點(diǎn)續(xù)傳分割解決方案,html5大文件斷點(diǎn)續(xù)傳切割解決方案,
在網(wǎng)上找過(guò)相關(guān)的資料,論壇里面也有網(wǎng)友交流過(guò),但是都不太令人滿意。
給政府做的一個(gè)項(xiàng)目。實(shí)際上客戶那邊對(duì)具體的技術(shù)實(shí)際不關(guān)心。
研發(fā)部門(mén)的同事調(diào)研過(guò)百度的webuploader這個(gè)組件,發(fā)現(xiàn)他實(shí)際上就是對(duì)Flash和HTML5進(jìn)行了一個(gè)封裝,本質(zhì)還是調(diào)的HTML5的API,之前在項(xiàng)目中也用過(guò),嘗試過(guò),但是最終都不太滿意,一個(gè)是兼容性非常差,說(shuō)的是兼容IE,但是在IE用的是Flash,在很多用戶的電腦上用不了,卡頓崩潰發(fā)生的太頻繁,文件上傳的數(shù)量一多比如幾千個(gè),前端頁(yè)面就開(kāi)始卡了,用戶體驗(yàn)非常差。這些問(wèn)題研發(fā)部的同事都向百度反應(yīng)過(guò),但是百度webuploader那邊一直沒(méi)人回,基本上沒(méi)人管,領(lǐng)導(dǎo)說(shuō)要求付費(fèi)提供技術(shù)支持,那邊也是沒(méi)人回,聯(lián)系不上他們?nèi)魏稳恕?/p>
webuploader這邊連個(gè)開(kāi)發(fā)人員都聯(lián)系不到,這個(gè)是怎么回事?
搞的我們領(lǐng)導(dǎo)現(xiàn)在基本上不怎么考慮國(guó)內(nèi)這些免費(fèi)開(kāi)源的項(xiàng)目,研發(fā)部門(mén)的同事稱這些項(xiàng)目為免費(fèi)坑人項(xiàng)目。
用戶上傳的文件比較大,有20G左右,直接用HTML傳的話容易失敗,服務(wù)器也容易出錯(cuò),需要分片,分塊,分割上傳。也就是將一個(gè)大的文件分成若干個(gè)小文件塊來(lái)上傳,另外就是需要實(shí)現(xiàn)秒傳功能和防重復(fù)功能,秒傳就是用戶如果上傳過(guò)這個(gè)文件,那么直接在數(shù)據(jù)庫(kù)中查找記錄就行了,不用再上傳一次,節(jié)省時(shí)間,實(shí)現(xiàn)的思路是對(duì)文件做MD5計(jì)算,將MD5值保存到數(shù)據(jù)庫(kù),算法可以用MD5,或者CRC,或者SHA1,這個(gè)隨便哪個(gè)算法都行。
分片還需要支持?jǐn)帱c(diǎn)續(xù)傳,現(xiàn)在HTML5雖然提供了信息記錄功能,但是只支持到了會(huì)話級(jí),也就是用戶不能關(guān)閉瀏覽器,也不能清空緩存。但是有的政府單位上傳大文件,傳了一半下班了,明天繼續(xù)傳,電腦一關(guān)結(jié)果進(jìn)度信息就丟失了,這個(gè)是他們的一個(gè)痛點(diǎn)。
切片的話還有一點(diǎn)就是在服務(wù)器上合并,一個(gè)文件的所有分片數(shù)據(jù)上傳完后需要在服務(wù)器端進(jìn)行合并操作。
聊下HTML5吧,怎么說(shuō)呢,HTML5也就是chrome提供的一個(gè)API來(lái)實(shí)現(xiàn)文件分片,反正基本的需求,小文件用是能用,但是用起來(lái)多多少少還是有點(diǎn)別扭,擴(kuò)展性,安全性,穩(wěn)定性用戶那陣都不太滿意,關(guān)鍵是什么,我們是沒(méi)辦法對(duì)HTML5進(jìn)行擴(kuò)展,個(gè)性化和定制化開(kāi)發(fā)的,基本上被谷歌給限制死了,這也是現(xiàn)在國(guó)產(chǎn)化的意義,希望能夠打破這個(gè)限制。不然公司的一些產(chǎn)品和業(yè)務(wù)不太好開(kāi)展,總不能用戶提個(gè)需求,我們就說(shuō)谷歌Chrome沒(méi)提供API,所我們就無(wú)法開(kāi)發(fā)吧。這不是跟客戶扯呢。
功能的話支持20G文件上傳和續(xù)傳,支持秒傳,支持文件夾上傳,支持在服務(wù)端保存文件夾層級(jí)結(jié)構(gòu),支持將文件夾層級(jí)結(jié)構(gòu)信息保存到數(shù)據(jù)庫(kù)中,支持下載時(shí)能夠?qū)⑽募A層級(jí)結(jié)構(gòu)下載下來(lái),支持下載文件夾,下載文件夾支持?jǐn)帱c(diǎn)續(xù)傳,支持VUE2,VUE3,React,支持IE,Chrome和信創(chuàng)國(guó)產(chǎn)化環(huán)境,比如銀河麒麟,統(tǒng)信UOS,龍芯,支持加密傳輸,包括加密上傳,加密下載,加密算法支持國(guó)密SM4,支持云對(duì)象存儲(chǔ),比如華為云,阿里云,騰訊云,七牛云,AWS,MinIO,FastDFS,需要提供手機(jī),QQ,微信,郵箱等聯(lián)系方式,提供7*24小時(shí)技術(shù)支持,提供長(zhǎng)期技術(shù)支持和維護(hù)服務(wù),提供遠(yuǎn)程1對(duì)1技術(shù)指導(dǎo),提供二次開(kāi)發(fā)指導(dǎo),提供文檔教程,提供視頻教程。1.下載示例
https://gitee.com/xproer/up6-vue-cli
將up6組件復(fù)制到項(xiàng)目中
示例中已經(jīng)包含此目錄
1.引入up6組件
2.配置接口地址
接口地址分別對(duì)應(yīng):文件初始化,文件數(shù)據(jù)上傳,文件進(jìn)度,文件上傳完畢,文件刪除,文件夾初始化,文件夾刪除,文件列表
參考:http://www.ncmem.com/doc/view.aspx?id=e1f49f3e1d4742e19135e00bd41fa3de
3.處理事件
啟動(dòng)測(cè)試
啟動(dòng)成功
效果
數(shù)據(jù)庫(kù)
源碼工程文檔:https://drive.weixin.qq.com/s?k=ACoAYgezAAw1dWofra
源碼報(bào)價(jià)單:https://drive.weixin.qq.com/s?k=ACoAYgezAAwoiul8gl
OEM版報(bào)價(jià)單: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 后轉(zhuǎn)向了 Emacs,org 模式就是我為什么這樣做的原因。
org 模式的精簡(jiǎn)和高效真的震驚了我,它真的是個(gè)“殺手”應(yīng)用。
這是我昨天寫(xiě)的:
它是一個(gè)組織信息的平臺(tái),它的主頁(yè)上這樣寫(xiě)著:“一切都是純文本:org 模式用于記筆記、維護(hù)待辦事項(xiàng)列表、計(jì)劃項(xiàng)目和使用快速有效的純文本系統(tǒng)編寫(xiě)文檔。”
這是事實(shí),但并不是很準(zhǔn)確。org 模式是一個(gè)你用來(lái)組織事務(wù)的小工具。它有一些非常合理的默認(rèn)設(shè)置,但也允許你自己定制。
主要突出在這幾件事上:
我強(qiáng)烈建議去閱讀 Carsten Dominik 關(guān)于 org 模式的一篇很棒的 Google 講話 。那篇文章真的很贊。
在 Emacs 中帶有 org 模式,但如果你想要個(gè)比較新的版本的話,Debian 用戶可以使用命令 apt-get install org-mode 來(lái)更新,或者使用 Emacs 的包管理系統(tǒng)命令 M-x package-install RET org-mode RET。
現(xiàn)在,你可能需要閱讀一下 org 模式的精簡(jiǎn)版教程中的 導(dǎo)讀部分 ,特別注意,你要設(shè)置下 啟動(dòng)部分 中提到的那些鍵的綁定。
我會(huì)給出一些好的教程和介紹的鏈接,但這篇文章不會(huì)是一篇教程。特別是在本文末尾,有兩個(gè)很不錯(cuò)的視頻鏈接。
我將在這里記錄下一些我的配置并介紹它的作用。你沒(méi)有必要每行每句將它拷貝到你的配置中 —— 這只是一個(gè)參考,告訴你哪些可以配置,要怎么在手冊(cè)中查找,或許只是一個(gè)“我現(xiàn)在該怎么做”的參考。
首先,我將 Emacs 的編碼默認(rèn)設(shè)置為 UTF-8。
(prefer-coding-system 'utf-8)
(set-language-environment "UTF-8")
org 模式中可以打開(kāi) URL。默認(rèn)的,它會(huì)在 Firefox 中打開(kāi),但我喜歡用 Chromium。
(setq browse-url-browser-function 'browse-url-chromium)
我把基本的鍵的綁定和設(shè)為教程里的一樣,再加上 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,按下后它就會(huì) 幫我捕獲某些事 ,其中包括一個(gè)指向我正在處理事務(wù)的鏈接。
你可以通過(guò)定義 捕獲模板 來(lái)配置它。我將保存兩個(gè)日志文件,作為會(huì)議、電話等的通用記錄。一個(gè)是私人用的,一個(gè)是辦公用的。如果我按下 C-c c j,它就會(huì)幫我捕獲為私人項(xiàng). 下面包含 %a 的配置是表示我當(dāng)前的位置(或是我使用 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)
我喜歡通過(guò) UUID 來(lái)建立鏈接,這讓我在文件之間移動(dòng)而不會(huì)破壞位置。當(dāng)我要 org 存儲(chǔ)一個(gè)鏈接目標(biāo)以便將來(lái)插入時(shí),以下配置有助于生成 UUID。
(require 'org-id)
(setq org-id-link-to-org-use-id 'create-if-interactive)
我喜歡將星期天作為一周的開(kāi)始,當(dāng)我將某件事標(biāo)記為完成時(shí),我也喜歡記下時(shí)間。
(setq org-log-done 'time)
(setq org-agenda-start-on-weekday 0)
在這我將配置它,讓它知道在議程中該使用哪些文件,而且在純文本的搜索中添加一點(diǎn)點(diǎn)小功能。我喜歡保留一個(gè)通用的文件夾(我可以從其中移動(dòng)或“重新歸檔”內(nèi)容),然后將個(gè)人和工作項(xiàng)的任務(wù)、日志和知識(shí)庫(kù)分開(kāi)。
(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)
我喜歡一個(gè)較漂亮的的屏幕。在你開(kāi)始習(xí)慣 org 模式之后,你可以試試這個(gè)。
(add-hook 'org-mode-hook
(lambda ()
(org-bullets-mode t)))
(setq org-ellipsis "?")
希望這篇文章展示了 org 模式的一些功能。接下來(lái),我將介紹如何定制 TODO 關(guān)鍵字和標(biāo)記、歸檔舊任務(wù)、將電子郵件轉(zhuǎn)發(fā)到 org 模式,以及如何使用 git 在不同電腦之間進(jìn)行同步。
你也可以查看 本系列的所有文章列表 。
via: https://changelog.complete.org/archives/9865-emacs-2-introducing-org-mode
作者: John Goerzen 選題: lujun9972 譯者: oneforalone 校對(duì): wxy
本文由 LCTT 原創(chuàng)編譯, Linux中國(guó) 榮譽(yù)推出
*請(qǐng)認(rèn)真填寫(xiě)需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。