动易 swCMS6.5 网站的上传文件管理器及判断文件是否失效的功能模块分析
动易 cms6.5 网站后台的上传文件管理模块由 6 个页面组成,现分别简介如下:
1 ) Admin_UploadFile.asp
频道上传文件后台管理页的框架页
上框架为 Admin_UploadFile_Top.asp
下框架分左和右
左为 Admin_UploadFile_Left.asp
右为 Admin_UploadFile_Main.asp
2 ) Admin_UploadFile_Top.asp
框架页的头部
用于获取框架页传递的参数 UploadDir ,即该频道上传文件的目录名
3 ) Admin_UploadFile_Left.asp
上传文件的树形目录结构,设计成资源管理器的风格
通过 FSO 的 Folder 对象来获取上传目录的子目录集合,代码如下:
Set FolderObj = fso.GetFolder(Server.MapPath(UpFilesPath)) ' 获取上传根目录的绝对路径
Set SubFolderObj = FolderObj.SubFolders ' 上传根目录的子文件夹集合
以下是我测试时使用的注释代码:(因为我对 FSO 的 Folder 对象印象不深)
'response.Write(FolderObj) ' 输出上传根目录的绝对路径
' 例如 : G:/ 动易 SiteWeaver6.5 版 /swcms/jiaoxuekeyan/UploadFiles_3443
'response.Write(TypeName(SubFolderObj)) ' 输出的值为 Folders
' 备注 : SubFolderObj 不是数组类型的值 , 而是 Folder 对象的集合 Folders
'response.Write(SubFolderObj.Count) ' 子文件夹的个数
获取得到的子文件夹集合后,执行一个循环
For Each FolderItem In SubFolderObj
‘完成此目录下子文件夹的输出显示
……
If UpLoadNumber = SubFolderObj.Count Then '若为 true, 则所有的子文件夹显示完毕
Response.Write (GetChildFolderList(UpFilesPath & FolderItem.name, "", True, ""))
Else '否则继续输出子文件夹
Response.Write (GetChildFolderList(UpFilesPath & FolderItem.name, "", False, ""))
End If
UpLoadNumber = UpLoadNumber + 1 '累积已显示的子文件夹个数
Next
因为要逐级地输出所有目录的子目录以构成目录树的形式,
所以这里编写了一个“递归函数”来实现逐级获取子目录并显示
Function GetChildFolderList(FolderID, Str, EndNodeTF, TempAllParentID)
…………
Set FolderObj = fso.GetFolder(Server.MapPath(FolderID))
Set SubFolderObj = FolderObj.SubFolders
For Each FolderItem In SubFolderObj
…………
GetChildFolderList = GetChildFolderList & GetChildFolderList(FolderID & "/" & FolderItem.name, ImageStr, TempEndNodeTF, AllParentID)
‘ 执行递归函数实现逐级显示子目录
ChildFolderNumber = ChildFolderNumber + 1
‘ 累积已显示的子文件夹的个数
Next
Set FolderObj = Nothing
Set SubFolderObj = Nothing
End Function
该递归函数的完整代码可查看文件 Admin_UploadFile_Left.asp
主要由 4 个 JS 函数完成该目录树的前台功能
ClickClassImg(ClickObj,ClassID) // 展开和折叠目录
ShowChildClass(ID) // 显示目录所包含的子目录列表
ChangeImg(Obj,OpenTF) // 更换目录的状态图片
HideChildClass(ID) // 隐藏目录所包含的子目录列表
另外,整个目录树的表格 中增加了一个自定义属性 RootDir
例如: id='RootDir' RootDir='/jiaoxuekeyan/UploadFiles_3443/' …… >
RootDir 为自定义属性 , 表示频道上传文件的根目录
每个上传目录所在的表格的行 中增加了三个自定义属性 AllParentID,ParentID,ClassID
例如: AllParentID=”/jiaoxuekeyan/UploadFiles_3443/ “
ParentID=”/jiaoxuekeyan/UploadFiles_3443/ “
ClassID=”/jiaoxuekeyan/UploadFiles_3443/200802” …… >
AllParentID 表示该目录的所有上级目录(若存在多个则用“ , ”分隔)
ParentID 表示父目录
ClassID 表示当前目录
这些 JS 函数通过 DOM 对象获取相关的属性值后执行实现上传文件“目录树”的前台功能。
点击目录树中的目录名后将链接到 Admin_UploadFile_Main.asp 文件中
同时将 ChannelID , UploadDir , CurrentDir 参数传递
若不为上传目录下的文件夹,还要传递 ParentDir 参数
4 ) Admin_UploadFile_Main.asp
上传文件管理模块的核心文件,则文件管理器的功能有:
<1> 以 详细信息方式 或 以缩略图方式 显示上传文件列表及子目录列表
相关的过程是:
GetUploadFileStyle() ‘ 获取 cookie 中保存的 ShowFileStyle 参数值 .
接着执行注释中的操作:
Select Case ModuleType ' 根据频道模块类型获取该频道的所有图片 , 用字符 "|" 来分隔
strFiles = LCase(strFiles) ' 获取该频道的所有上传文件
<2> 全选 / 取消全选上传的文件 / 预览缩略图 / 左栏树形目录的开关 / 排序
相关的 JS 函数为:
function CheckAll(form)
function unselectall()
function preloadImg(src)
function switchBar(obj)
function reSort(which) ‘ 传递用于排序的文件属性,可为:文件名 / 大小 / 类型 / 修改时间
<3> 通过传递的参数值调用相应的过程来实现文件管理器的如下功能(即:注释的文本),
以下所有的过程都定义在本文件中
Select Case Action ' 根据传递的参数执行相应操作
Case "Del"
Call DelFiles '删除文件
Case "DelThisFolder"
Call DelThisFolder '删除目录
Case "DelCurrentDir"
Call DelCurrentDir '删除当前目录
Case "DelAll"
Call DelAll '删除全部
Case "DoAddWatermark" ‘ 以下两个过程的执行需要安装 Jpeg 图象处理组件
Call DoAddWatermark '给图片增加水印
Case "DoAddWatermark_CurrentDir"
Call DoAddWatermark_CurrentDir '给当前目录下的图片增加水印
Case Else
Call main
‘ 过程 main() 初始化本页内容的显示
End Select
过程 Main() 的代码主要就是实现文件的排序功能 以及 选择上传文件的浏览方式
所用到的知识点包括:
FSO 的 File 对象的属性
动态数组的运用
根据排序字段值的类型选择合适的方法进行排序,
例如:对字符串值的大小比较用 StrComp ()函数
对上传文件的数组完成要求的排序,通过执行一个二层循环来完成排序,省略的代码如下:
'======= 排序开始 =======
For i = FileCount To 0 Step -1
minmax = theFiles(0)(sortBy)
minmaxSlot = 0
For j = 1 To i
………………
Next
If minmaxSlot <> i Then
temp = theFiles(minmaxSlot)
theFiles(minmaxSlot) = theFiles(i)
theFiles(i) = temp
'排序完成后将序号作为元素的序号
End If
Next
'======= 排序结束 =======
有兴趣的朋友可以找到完整的代码来阅读。
<4> 最后根据 cookie 中保存的 ShowFileStyle 参数值来选择上传文件的显示方式:
If ShowFileStyle = 1 Then
Call ShowFileDetail '以缩略图方式显示文件的过程
Else
Call ShowFileThumb '以详细信息方式显示文件的过程
End If
下面将对以上提到的两过程 ShowFileDetail() 和 ShowFileThumb() 的部分代码进行分析 :
过程一: ShowFileDetail() 以详细信息方式显示 ,
其包含两个过程分别用于文件夹列表的显示和文件列表的显示 : :
Call ShowFileDetail_fol '输出当前目录下的文件夹列表
Call ShowFileDetail_Fil '输出当前目录下的文件列表
该过程还调用预览图片缩略图时显示提示信息的函数:
Function GetFileContent(ByVal sPath, sType)
缩略图的显示则由 JS 函数 function ShowADPreview(ADContent) 来实现
显示缩略图的浮动的 标签的显示和定位由 ShowJS_Tooltip 过程中的 js 代码来实现
若服务器安装了 Jpeg 图片处理组件 , 则输出如下内容 ; 若未安装 , 则不显示以下内容
If IsObjInstalled("Persits.Jpeg") = True Then
Response.Write " 给选中的图片添加水印' > value='给当前目录添加图片水印 ' >"
End If
过程二: ShowFileThumb() 以缩略图方式显示
该过程仅调用了本页中定义的分页函数 showpage2(strFileName, totalPut, MaxPerPage)
其代码按执行的顺序编写,条理清晰,顺着代码阅读即可。
重点提一下这句实现缩略图换行的代码。这里是 4 个 / 行
If FileNum Mod 4 = 0 Then Response.Write ""
'=========每行显示 4 个图片文件 , 满 4 个则换行 ==========
两过程删除文件夹及文件,全选和取消全选等操作所调用的过程和函数都是相同的。
这些过程和函数也都定义在本文件 Admin_UploadFile_Main.asp 中,
想具体了解的朋友可找来阅读。
5 ) Admin_UploadFile_Clear.asp
该文件的作用就是清理该频道无用的上传文件,
“判断文件是否失效”的核心代码就包含在该文件中。
该核心代码设计思路分析如下:
首先获取该频道的所有上传文件以及文章内容中所包含的所有 图片标签,
以文章频道来举例:
sql = "select UploadFiles,Intro from PE_Article where ChannelID=" & ChannelID
strFiles = strFiles & "|" & rs(0) ' 获取所有文章的上传文件 , 用 "|" 分隔
ItemIntro = ItemIntro & "|" & rs(1) ' 获取所有文章的内容 , 用 "|" 分隔
使用正则表达式选择出文章内容中所有的 标签
regEx.Pattern = " ]>" ' 查询内容中所有
Set Matches = regEx.Execute(ItemIntro)
将内容中所有的 标签累计起来:
tempStr = tempStr & "|" & Match.value ' 累计数组
再次通过正则表达式获取 src= 图片的链接
regEx.Pattern = "src/s*=/s*.+?/.(" & UpFileType & ")" ' 查询 src = 内的链接
再次通过正则表达式替换 ”src=” 字符
regEx.Pattern = "src/s*=/s*" ' 过滤 src =
tempStr = regEx.Replace(tempStr, "")
最后得到所有的上传文件和文件内容中的所有使用的图片文件名
strFiles = strFiles & tempStr
得到所有使用的图片文件名后,接下来就通过执行两个循环来判断上传目录
和上传目录下的子目录中的文件是否包含在数据库存储的上传文件名中,
即是否包含在变量 strFiles 的值中。
若在,则该文件有效;若不在则该文件无效,则被删除。
循环一:
For Each theFile In theFolder.Files ‘ 循环判断上传根目录下的所有文件
If InStr(strFiles, LCase(theFile.name)) <= 0 Then
theFile.Delete True
'若该上传目录下的文件不包含在数据库存储的上传文件名中,则被删除
i = i + 1 '累计被删除的文件个数
End If
Next
循环二:
For Each theSubFolder In theFolder.SubFolders ‘ 上传根目录下的所有子文件夹
For Each theFile In theSubFolder.Files ‘循环判断子文件夹下的所有文件
If InStr(strFiles, LCase(theSubFolder.name & "/" & theFile.name)) <= 0 Then
theFile.Delete True
'若该上传目录下的子文件夹中的文件不包含在数据库存储的上传文件名中,则被删除
i = i + 1 '接着“循环一”继续累计被删除的文件个数
End If
Next
Next
经过实验发现,
确实只能删除上传根目录下的无效文件和上传目录根目录下的子文件夹中的无效文件。
再深层次的目录则无法判断。
其实这也足够了,比如我在测试时
频道“科研天地”的上传根目录为 UploadFiles_3443
这是网站给我的自定义频道“科研天地”建立的上传文件根目录
当有文件上传时,会在 UploadFiles_3443 下再建立子文件夹 200802
子文件夹之所以取名为 200802 是因为存放的是 2008 年 2 月上传的图片文件
6 ) Admin_UploadFile_Style.asp
由于本文件的唯一作用就是通过回传上传文件显示方式的参数 ,
实现 Admin_UploadFile_Main.asp 中的上传文件
是以“ 详细信息方式 ”还是以“缩略图方式”来显示
将 http:/Admin_UploadFile_Style.asp?ShowFileStyle=1
传递的 ShowFileStyle 参数的值 1 保存到 cookies 中,代码为:
Response.cookies("ShowFileStyle") = ShowFileStyle ' 将上传文件的显示样式保存到 cookies 中
然后返回到刚才跳转到本页的源地址去,代码为:
Response.Redirect request.servervariables("http_referer") ' 从哪里链接到该文件的就回哪里去
即本文件起到一个“中转站”的作用。
其核心知识点就是 request.servervariables("HTTP_REFERER") 的应用
下面是我转的关于 request.servervariables("HTTP_REFERER") 的一帖子
以此来补充介绍一下 request.servervariables("HTTP_REFERER") 的用途:
其返回的是调用这个 asp 页面的是那个页面,
即看这个页面是被哪个页面所调用的,
这么跟你说吧:
有 a.asp 和 b.asp 两个页面,
在 a.asp 中点击链接到 b.asp ,
或是 a.asp 中用表单提交数据到 b.asp ,
或是用脚本跳转到 b.asp,
那么在 b.asp 中用 request.servervariables("HTTP_REFERER") 方法
取得的字符串就是 a.asp 的 URL 路径。
注意:该 URL 路径包括 a.asp 后传递的参数
若是由 a.asp?action=add 链接到 b.asp
则 b.asp 中调用 request.servervariables("HTTP_REFERER")
取得的字符串就是 a.asp?action=add
总结:
“上传文件管理器” 的核心知识点其实也就是 FSO 的应用
我转贴的一篇关于 FSO 的文章《 ASP中 FSO功能详细介绍 》 即可以作为学习也可以作为复习来阅读,
文章中包含的 FSO 的几个常用实例建议初次学习的朋友们实际操练以下其代码,
对理解和增加印象会很有帮助:
文章 《 ASP中 FSO功能详细介绍 》的链接: http://blog.csdn.net/kof98cs/archive/2008/03/09/2159320.aspx
“判断文件是否失效”
核心代码都包含在 Admin_UploadFile_Clear.asp 中,
通过阅读我们发现从数据库获取所有使用的上传文件信息后,
就是通过一系列的正则表达式对上面获取的信息进行筛选和替换的操作,
从而简化信息里多余的内容。
最后以上传文件是否包含在数据库信息中作为判断的条件来决定该上传文件是否有效
所以,“判断文件是否失效”的核心知识点还是对正则表达式的应用。
在动易网站中正则表达式的应用是比较多的,由此看出它在网站技术中的重要地位。
这里列出一篇文章《 正则表达式的常用方法和属性以及应用举例 》
http://blog.csdn.net/kof98cs/archive/2008/01/24/2063700.aspx
以便对正则表达式进行学习和复习
这篇文章我花一个星期左右的时间才写完,
主要是对该模块所用到的某些知识点和函数不熟,也因为懒所以知难而退
由于自己文笔不佳也写得语无伦次,
但通过自己在阅读时在模块文件中添加的注释可以很方便地查找某些细节代码。
所以想具体深入透彻了解此功能模块的朋友一定要亲自阅读以上几个模块文件的代码
不懂到知识点可以查找有关 ASP 和 VBSscript 的手册来学习,
尤其提高对 FSO 和正则表达式的运用能力。
你可能感兴趣的:(ASP)
在 ASP.NET Core WebAPI 中使用 JWT 验证
.NET跨平台
ASP.NET Core Web API IdentityServer4 OAuth2.0协议 .NET CORE WEBAPI JWT
为了保护WebAPI仅提供合法的使用者存取,有很多机制可以做,透过JWT(JSONWebToken)便是其中一种方式,这篇示范如何使用官方所提供的System.IdentityModel.Tokens.Jwt扩充套件,处理呼叫API的来源是否为合法的使用者身分。顺道一提,要产生JWTToken有很多套件可以帮助开发者快速建立,JWT这个NuGet套件就是其中一个,但这裡我使用官方所提供的Syste
【推荐项目】044-中医门诊管理系统
蜗牛 | ICU
推荐项目 java 前端框架 毕设 spring mybatis
044-中医门诊管理系统介绍javaspringbootvuejs中医门诊管理系统为了帮助您更清晰地整理中医门诊管理系统的功能,我将按照您提供的角色和功能进行归类和整理。以下是整理后的功能列表:角色划分核心管理员医生药师用户(普通患者)管理端功能(核心管理员)统计用户统计(按注册时间、活跃度等)药物销售统计处方统计咨询统计用户管理用户列表(查看、编辑、删除)用户角色分配用户权限管理医生管理医生列表
在线office文件预览
大波V5
java
微软提供了两个在线预览office文件的服务https://view.officeapps.live.com/op/view.aspx?src=http://127.0.0.1/file.xlsxhttps://view.officeapps.live.com/op/embed.aspx?src=http://127.0.0.1/file.xlsx把src的值替换成自己的服务即可
PDF处理控件Aspose.PDF,如何实现企业级PDF处理
CodeCraft Studio
文档管理 控件 pdf python java
PDF处理为何成为开发者的“隐形雷区”?“手动调整200页PDF目录耗时3天,扫描件文字识别错误导致数据混乱,跨平台渲染格式崩坏引发客户投诉……”作为开发者,你是否也在为PDF处理的复杂细节消耗大量精力?Aspose.PDF凭借AI增强解析、全栈API控制与企业级自动化能力,正在重新定义PDF处理效率的天花板。Aspose.pdf最新下载一、Aspose.PDF六大技术亮点1.高精度PDF解析与生
Raspberry Pi图形组件深入解析与应用示例
嵌入式Jerry
Linux 服务器 linux 运维 python android
一、概述RaspberryPi的图形组件集中在Yocto项目的meta-raspberrypi层中的recipes-graphics目录下。此目录不仅定义了树莓派硬件优化的图形库和驱动,也提供了丰富的配置示例和具体实现方案,涵盖了从基础绘图、3D渲染到视频加速及窗口管理系统。二、目录结构与核心作用1.图形库优化cairo文件:cairo_%.bbappend作用:针对树莓派平台特定优化的2D图形矢
2025年渗透测试面试题总结-长某亭科技-安全服务工程师(一面)(题目+回答)
独行soc
2025年渗透测试面试指南 面试 职场和发展 安全 红蓝攻防 护网 2025 科技
网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。目录长某亭科技-安全服务工程师(一面)1.SQL注入原理与代码层面成因原理代码层面成因漏洞触发场景2.XSS漏洞原理(代码层面)原理代码层面成因漏洞触发场景3.OWASPTop10漏洞(2023版)4.SQL注入防御方案5.SQL注入绕过防护6.护网行动工作内容7.学校攻
spring AOP详解
web15085415935
面试 学习路线 阿里巴巴 spring java 后端
文章目录AOP1环境准备1.1工程及接口创建1.2工程存在的问题1.2.1问题1.2.2解决思路2AOP面向切面编程2.1AOP概述2.2AOP原理分析3基于注解的AOP3.1入门示例3.2使用流程3.3切入点表达式3.4练习3.5通知类型AOPAOP(AspectOrientProgramming)是一种设计思想,是软件设计领域中的面向切面编程,它是面向对象编程(OOP)的一种补充和完善;实际项
【Python】文件夹下pdf转md文件
不期而遇__
python pdf 开发语言
先下载相关库:aspose-wordspipinstallaspose-words然后在运行。完整代码:importaspose.wordsasawimportospath0=r'path'file_name=[]path_list=[]foriinos.listdir(path0):file_name.append(i)path_list.append(os.path.join(path0+i)
如何通过 DeepSeek 开发一个简单的 AI 辅助工具?
借雨醉东风
人工智能
关注我,持续分享逻辑思维&管理思维&面试题;可提供大厂面试辅导、及定制化求职/在职/管理/架构辅导;推荐专栏《10天学会使用asp.net编程AI大模型》,目前已完成所有内容。一顿烧烤不到的费用,让人能紧跟时代的浪潮。从普通网站,到公众号、小程序,再到AI大模型网站。干货满满。学成后可接项目赚外快,绝对划算。不仅学会如何编程,还将学会如何将AI技术应用到实际问题中,为您的职业生涯增添一笔宝贵的财富
【SpringBoot】Spring AOP详解
一只爱打拳的程序猿
Spring spring java 后端 spring boot
目录一、什么是SpringAOP二、SpringAOP实现2.1添加SpringAOP依赖2.2定义切面和切点2.3解释AspectJ2.4什么是通知一、什么是SpringAOPAOP(AspectOrientedProgramming)即面向切面编程,是对某一类事件的集中处理。面向切面编程(AOP)是一种编程范式,旨在将横切关注点(如日志记录、事务管理、权限验证等)从业务逻辑代码中分离出来,从而
迈向数据科学的第一步:在Python中支持向量回归
weixin_26746401
python 机器学习 人工智能 深度学习 大数据
什么是支持向量回归?(WhatisSupportVectorRegression?)Supportvectorregressionisaspecialkindofregressionthatgivesyousomesortofbufferorflexibilitywiththeerror.Howdoesitdothat?I’mgoingtoexplainittoyouinsimpletermsby
python爬取酷狗音乐的mv地址_爬取酷狗音乐.py
HAR.王帅真
importrequestsfromseleniumimportwebdriverfrompyqueryimportPyQueryaspq#获取歌名defAccess_to_the_song(C):doc=pq(C)The_song=doc('.audioName').text()returnThe_song#进入听歌的界面爬取HTMLdefBrowser_access(URL):The_brow
构建基于ASP.NET的教务管理系统
黃昱儒
本文还有配套的精品资源,点击获取简介:教务管理系统是一个Web应用程序,利用ASP.NET技术为高校和教育机构提供全面的教务管理功能。它包括学生信息管理、课程管理、考试安排和成绩录入等核心模块。系统支持权限控制和数据管理,以确保信息安全和操作便捷。ASP.NET框架使用C#或VB.NET编程,结合.NETFramework、SQLServer或MySQL数据库以及前端技术(HTML、CSS、Jav
ASP.NET教务信息管理系统的设计与实现(源代码+论文)
技术宅小伙
asp.net 后端
随着我国教育事业的不断发展,各级教育层次的教学规模日益扩大,采用传统的教务信息管理方法(如直接手工管理或者开发程度不高的管理系统)不但浪费大量人力、物力和财力资源,而且不能满足当前教育发展的需求。教务信息管理系统是一种融合管理科学、信息科学、系统科学和计算机技术为一体的综合性先进管理手段。系统是建立在WINDOWS操作系统上的基于C/S(客户机/服务器)模式的教务信息管理系统,选用VB.NET+S
Abp框架
科学的发展-只不过是读大自然写的代码
c#
基于DDD的现代ASP.NET开发框架–ABP系列文章总目录什么是ASP.NETBoilerplateProject(ABP)框架【DDD】领域驱动设计实践——框架实现DDD分层架构的三种模式【DDD】领域驱动设计实践——Domain层实现ABP框架-会话https://cn.abp.io领域驱动设计https://www.jianshu.com/p/89dfcd672d43https://blo
Python 自动化探索性数据分析(EDA)工具
东方佑
量子变法 python 自动化 数据分析
1.PandasProfiling功能特点:自动生成详细的统计报告,包含数据概览、单变量分析、相关性矩阵、缺失值分析等。支持交互式HTML报告,可导出为PDF或其他格式。适合快速生成数据集的全面摘要。使用示例:importpandasaspdfrompandas_profilingimportProfileReportdf=pd.read_csv("data.csv")profile=Profil
ABP框架概念
是刘彦宏吖
ABP框架应用 数据库
二、领域层10,实体11,值对象12,仓储13,领域服务14,规格模式15,工作单元16,事件总线17,数据过滤器三、应用层18,应用服务19,数据传输对象20,验证数据传输对象21,授权22,功能管理23,审计日志四、分布式服务层24,ASP.NETWebAPIControllers25,动态Webapi层26,OData整合27,SwaggerUI整合10,实体实体具有Id并存储在数据库中,实
基于.net8的webapi使用abp
bjjjunjie
ABP vNext .net
首先引用volo.abp.core和volo.abp.asp.netcore.mvc,同样需要开启包括预发行版创建AppModule继承AbpMoudle,然后在类上加上特性[DependsOn(typeof(AbpAspNetCoreMvcModule))],此时就可以覆写OnApplicationInitialization,在此处可以配置管道[DependsOn(typeof(AbpAspN
Asp.net WebAPi gzip压缩和json格式化
weixin_34192816
json c#
现在webapi越来越流行了,很多时候它都用来做接口返回json格式的数据,webapi原本是根据客户端的类型动态序列化为json和xml的,但实际很多时候我们都是序列化为json的,所以webapi的序列化比我们用ServiceStack.Text序列化要多花费一些时间,还有如果返回的数据量比较大那么我们应该启动gzip和deflate压缩。而这些实现都不得影响现有的code,我个人喜欢同时也是
asp.net core使用gzip
weixin_30663471
c# 测试 json
http://www.talkingdotnet.com/how-to-enable-gzip-compression-in-asp-net-core/转载于:https://www.cnblogs.com/94pm/p/9063128.html
c#面试题整理2
hhw199112
c# 开发语言
1.介绍一下ADO.NET的类DataSet,SqlDataAdapter,SqlConnection2.ASP.NET和ASP相比有何优点a.代码分离,apsx文件用于页面显示,aspx.cs用于后台逻辑。asp则是前后端混合在一起。b.ASP.NET实现了面向对象编程3.委托和事件的关系委托本质上算是方法接口事件算是委托的封装后的调用5.Array和ArrayList的区别Array要有初始化
服务端创建实战 - MCP协议(大模型上下文协议)快速入门
同学小张
人工智能 gpt AIGC DeepSeek 学习 开源协议 MCP
大家好,我是同学小张,+v:jasper_8017一起交流,持续学习AI大模型应用实战案例,持续分享,欢迎大家点赞+关注,订阅我的大模型专栏,共同学习和进步。在本文中,我们将从零到一构建一个简单的MCP天气服务器,从实践过程中,熟悉MCP协议的使用。1.MCP服务器介绍服务器提供专门的上下文和功能,通过MCP原语公开资源、工具和提示,独立运行,具有明确的职责,通过客户端接口请求采样,必须遵守安全约
利用Aspose.PDF以编程方式打印PDF文档
刘联其
C#操作文件
使用C#打印PDF文件可以使用C#或VB.net在.NET应用程序中自动打印PDF文件。您可以按照以下简单步骤打印PDF文件:创建一个PdfViewer类的对象加载输入的PDF文档打印PDF文件下面的代码段显示了如何使用C#打印PDF文件://CreatePdfViewerobjectPdfViewerviewer=newPdfViewer();//OpeninputPDFfileviewer.B
使用PDF处理控件Aspose.PDF以编程方式打印PDF文档完整攻略
Lee-Shyllen
Aspose 文档开发 文档格式转换 PDF aspose 文档管理 文档格式转换
许多公司在很大程度上减少了纸张的使用。但是,在某些情况下打印很重要。例如,系统可能包含PDF格式的在线订单的详细信息。他们需要在分发在线订单进行交付时打印PDF。他们大规模处理项目,因此手动打印每个文档可能是一项艰巨的任务。Aspose.PDF除了许多其他文件操纵和转换功能外,还支持PDF文件的高效打印。让我们探讨以下与使用C#在.NET应用程序中打印PDF文件有关的用例:使用C#打印PDF文件使
vue项目纯前端把PDF转成图片并下载
David+Zhao
VUE base64 npm 前端 vue.js pdf canvas pdfjs-dist pdfjs pdf转图片
项目需求是把一个pdf转成图片,并在最后添加上二维码,然后下载下来。经过一番研究以后,作此记录。主要用到了pdfjs-dist这个包,我用的是2.16.105版本。废话不多说,直接上代码。先下载node_modules包npmipdfjs-dist-S然后在vue页面中引入:import*aspdfjsLibfrom"pdfjs-dist/legacy/build/pdf.js";import*a
Metasploit SQL注入漏洞渗透测试实战
wespten
网络安全AI+ 渗透测试 代码审计 等保 全栈网络安全开发 sql 安全 web安全
1、SQL注入漏洞简介现代化Web应用程序在设计时都会将代码与数据进行分离,这些数据会独立保存在服务器中。当数据量较大的时候,需要使用一种特殊的数据管理程序,也就是常说的数据库。目前比较常用的数据库软件有MySQL、SQLServer、Access等,不过它们的操作都要遵循SQL(StructuredQueryLanguage,结构化查询语言)标准,但是不同的产品之间存在着一定的差别。SQL注入攻
ASP.NET Core自定义认证和授权搭建流程(使用JWT)
woshihedayu
asp.net 后端
asp.netcore本身就自带了认证和授权框架,其中包含了Identity框架,可以自动生成相关的数据库表结构,调用UserManager、RoleManager、SiginManager这些服务,可以自动生成SQL语句访问用户、角色等功能。但是不同的项目,业务功能不一样,Identity自动生成的表结构并不符合所有项目的业务需求,所以我不太看好使用Identity框架来搭建项目,这里总结一下使
ASP.NET Core 响应压缩中间件
weixin_34210740
json 测试
为什么80%的码农都做不了架构师?>>>使用及对比在Startup.cs中添加服务并使用即可,主代码如下://Startup.cspublicvoidConfigureServices(IServiceCollectionservices){//...services.AddResponseCompression();//...}publicvoidConfigure(IApplicationBu
ASP.NET CORE JWT认证
begeneral
ASP.NET CORE asp.net core jwt
ASP.NETCORE版本:.NET5.0关于JWT的基础知识,请大家上网搜一下,这里主要从代码层面讲解。首先新建一个ASP.NETCOREWebapi的空项目,然后新建一个LoginController的api控制器。从nuget中安装包:Microsoft.AspNetCore.Authentication.JwtBearer;1、生成Token先看代码:[Route("api/[contro
ASP.NET MVC 网站优化总结 使用 Gzip 压缩
飞鸟flyboy
服务器安全 常用技巧
1.开GZIP有什么好处?答:Gzip开启以后会将输出到用户浏览器的数据进行压缩的处理,这样就会减小通过网络传输的数据量,提高浏览的速度。2.如何启用IIS的Gzip压缩功能:答:首先,如果你需要压缩静态文件(HTML),需要在硬盘上建一个目录,并给它“IUSR_机器名”这个用户的写权限。如果压缩动态文件(PHP,asp,aspx)就不需要了,因为它的页面是每次都动态生成的,压缩完就放弃。然后在I
eclipse maven
IXHONG
eclipse
eclipse中使用maven插件的时候,运行run as maven build的时候报错
-Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOME environment variable and mvn script match.
可以设一个环境变量M2_HOME指
timer cancel方法的一个小实例
alleni123
多线程 timer
package com.lj.timer;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class MyTimer extends TimerTask
{
private int a;
private Timer timer;
pub
MySQL数据库在Linux下的安装
ducklsl
mysql
1.建好一个专门放置MySQL的目录
/mysql/db数据库目录
/mysql/data数据库数据文件目录
2.配置用户,添加专门的MySQL管理用户
>groupadd mysql ----添加用户组
>useradd -g mysql mysql ----在mysql用户组中添加一个mysql用户
3.配置,生成并安装MySQL
>cmake -D
spring------>>cvc-elt.1: Cannot find the declaration of element
Array_06
spring bean
将--------
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3
maven发布第三方jar的一些问题
cugfy
maven
maven中发布 第三方jar到nexus仓库使用的是 deploy:deploy-file命令
有许多参数,具体可查看
http://maven.apache.org/plugins/maven-deploy-plugin/deploy-file-mojo.html
以下是一个例子:
mvn deploy:deploy-file -DgroupId=xpp3
MYSQL下载及安装
357029540
mysql
好久没有去安装过MYSQL,今天自己在安装完MYSQL过后用navicat for mysql去厕测试链接的时候出现了10061的问题,因为的的MYSQL是最新版本为5.6.24,所以下载的文件夹里没有my.ini文件,所以在网上找了很多方法还是没有找到怎么解决问题,最后看到了一篇百度经验里有这个的介绍,按照其步骤也完成了安装,在这里给大家分享下这个链接的地址
ios TableView cell的布局
张亚雄
tableview
cell.imageView.image = [UIImage imageNamed:[imageArray objectAtIndex:[indexPath row]]];
CGSize itemSize = CGSizeMake(60, 50);
&nbs
Java编码转义
adminjun
java 编码转义
import java.io.UnsupportedEncodingException;
/**
* 转换字符串的编码
*/
public class ChangeCharset {
/** 7位ASCII字符,也叫作ISO646-US、Unicode字符集的基本拉丁块 */
public static final Strin
Tomcat 配置和spring
aijuans
spring
简介
Tomcat启动时,先找系统变量CATALINA_BASE,如果没有,则找CATALINA_HOME。然后找这个变量所指的目录下的conf文件夹,从中读取配置文件。最重要的配置文件:server.xml 。要配置tomcat,基本上了解server.xml,context.xml和web.xml。
Server.xml -- tomcat主
Java打印当前目录下的所有子目录和文件
ayaoxinchao
递归 File
其实这个没啥技术含量,大湿们不要操笑哦,只是做一个简单的记录,简单用了一下递归算法。
import java.io.File;
/**
* @author Perlin
* @date 2014-6-30
*/
public class PrintDirectory {
public static void printDirectory(File f
linux安装mysql出现libs报冲突解决
BigBird2012
linux
linux安装mysql出现libs报冲突解决
安装mysql出现
file /usr/share/mysql/ukrainian/errmsg.sys from install of MySQL-server-5.5.33-1.linux2.6.i386 conflicts with file from package mysql-libs-5.1.61-4.el6.i686
jedis连接池使用实例
bijian1013
redis jedis连接池 jedis
实例代码:
package com.bijian.study;
import java.util.ArrayList;
import java.util.List;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoo
关于朋友
bingyingao
朋友 兴趣爱好 维持
成为朋友的必要条件:
志相同,道不合,可以成为朋友。譬如马云、周星驰一个是商人,一个是影星,可谓道不同,但都很有梦想,都要在各自领域里做到最好,当他们遇到一起,互相欣赏,可以畅谈两个小时。
志不同,道相合,也可以成为朋友。譬如有时候看到两个一个成绩很好每次考试争做第一,一个成绩很差的同学是好朋友。他们志向不相同,但他
【Spark七十九】Spark RDD API一
bit1129
spark
aggregate
package spark.examples.rddapi
import org.apache.spark.{SparkConf, SparkContext}
//测试RDD的aggregate方法
object AggregateTest {
def main(args: Array[String]) {
val conf = new Spar
ktap 0.1 released
bookjovi
kernel tracing
Dear,
I'm pleased to announce that ktap release v0.1, this is the first official
release of ktap project, it is expected that this release is not fully
functional or very stable and we welcome bu
能保存Properties文件注释的Properties工具类
BrokenDreams
properties
今天遇到一个小需求:由于java.util.Properties读取属性文件时会忽略注释,当写回去的时候,注释都没了。恰好一个项目中的配置文件会在部署后被某个Java程序修改一下,但修改了之后注释全没了,可能会给以后的参数调整带来困难。所以要解决这个问题。
&nb
读《研磨设计模式》-代码笔记-外观模式-Facade
bylijinnan
java 设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
/*
* 百度百科的定义:
* Facade(外观)模式为子系统中的各类(或结构与方法)提供一个简明一致的界面,
* 隐藏子系统的复杂性,使子系统更加容易使用。他是为子系统中的一组接口所提供的一个一致的界面
*
* 可简单地
After Effects教程收集
cherishLC
After Effects
1、中文入门
http://study.163.com/course/courseMain.htm?courseId=730009
2、videocopilot英文入门教程(中文字幕)
http://www.youku.com/playlist_show/id_17893193.html
英文原址:
http://www.videocopilot.net/basic/
素
Linux Apache 安装过程
crabdave
apache
Linux Apache 安装过程
下载新版本:
apr-1.4.2.tar.gz(下载网站:http://apr.apache.org/download.cgi)
apr-util-1.3.9.tar.gz(下载网站:http://apr.apache.org/download.cgi)
httpd-2.2.15.tar.gz(下载网站:http://httpd.apac
Shell学习 之 变量赋值和引用
daizj
shell 变量引用 赋值
本文转自:http://www.cnblogs.com/papam/articles/1548679.html
Shell编程中,使用变量无需事先声明,同时变量名的命名须遵循如下规则:
首个字符必须为字母(a-z,A-Z)
中间不能有空格,可以使用下划线(_)
不能使用标点符号
不能使用bash里的关键字(可用help命令查看保留关键字)
需要给变量赋值时,可以这么写:
Java SE 第一讲(Java SE入门、JDK的下载与安装、第一个Java程序、Java程序的编译与执行)
dcj3sjt126com
java jdk
Java SE 第一讲:
Java SE:Java Standard Edition
Java ME: Java Mobile Edition
Java EE:Java Enterprise Edition
Java是由Sun公司推出的(今年初被Oracle公司收购)。
收购价格:74亿美金
J2SE、J2ME、J2EE
JDK:Java Development
YII给用户登录加上验证码
dcj3sjt126com
yii
1、在SiteController中添加如下代码:
/**
* Declares class-based actions.
*/
public function actions() {
return array(
// captcha action renders the CAPTCHA image displ
Lucene使用说明
dyy_gusi
Lucene search 分词器
Lucene使用说明
1、lucene简介
1.1、什么是lucene
Lucene是一个全文搜索框架,而不是应用产品。因此它并不像baidu或者googleDesktop那种拿来就能用,它只是提供了一种工具让你能实现这些产品和功能。
1.2、lucene能做什么
要回答这个问题,先要了解lucene的本质。实际
学习编程并不难,做到以下几点即可!
gcq511120594
数据结构 编程 算法
不论你是想自己设计游戏,还是开发iPhone或安卓手机上的应用,还是仅仅为了娱乐,学习编程语言都是一条必经之路。编程语言种类繁多,用途各 异,然而一旦掌握其中之一,其他的也就迎刃而解。作为初学者,你可能要先从Java或HTML开始学,一旦掌握了一门编程语言,你就发挥无穷的想象,开发 各种神奇的软件啦。
1、确定目标
学习编程语言既充满乐趣,又充满挑战。有些花费多年时间学习一门编程语言的大学生到
Java面试十问之三:Java与C++内存回收机制的差别
HNUlanwei
java C++ finalize() 堆栈 内存回收
大家知道, Java 除了那 8 种基本类型以外,其他都是对象类型(又称为引用类型)的数据。 JVM 会把程序创建的对象存放在堆空间中,那什么又是堆空间呢?其实,堆( Heap)是一个运行时的数据存储区,从它可以分配大小各异的空间。一般,运行时的数据存储区有堆( Heap)和堆栈( Stack),所以要先看它们里面可以分配哪些类型的对象实体,然后才知道如何均衡使用这两种存储区。一般来说,栈中存放的
第二章 Nginx+Lua开发入门
jinnianshilongnian
nginx lua
Nginx入门
本文目的是学习Nginx+Lua开发,对于Nginx基本知识可以参考如下文章:
nginx启动、关闭、重启
http://www.cnblogs.com/derekchen/archive/2011/02/17/1957209.html
agentzh 的 Nginx 教程
http://openresty.org/download/agentzh-nginx-tutor
MongoDB windows安装 基本命令
liyonghui160com
windows安装
安装目录:
D:\MongoDB\
新建目录
D:\MongoDB\data\db
4.启动进城:
cd D:\MongoDB\bin
mongod -dbpath D:\MongoDB\data\db
&n
Linux下通过源码编译安装程序
pda158
linux
一、程序的组成部分 Linux下程序大都是由以下几部分组成: 二进制文件:也就是可以运行的程序文件 库文件:就是通常我们见到的lib目录下的文件 配置文件:这个不必多说,都知道 帮助文档:通常是我们在linux下用man命令查看的命令的文档
二、linux下程序的存放目录 linux程序的存放目录大致有三个地方: /etc, /b
WEB开发编程的职业生涯4个阶段
shw3588
编程 Web 工作 生活
觉得自己什么都会
2007年从学校毕业,凭借自己原创的ASP毕业设计,以为自己很厉害似的,信心满满去东莞找工作,找面试成功率确实很高,只是工资不高,但依旧无法磨灭那过分的自信,那时候什么考勤系统、什么OA系统、什么ERP,什么都觉得有信心,这样的生涯大概持续了约一年。
根本不是自己想的那样
2008年开始接触很多工作相关的东西,发现太多东西自己根本不会,都需要去学,不管是asp还是js,
遭遇jsonp同域下变作post请求的坑
vb2005xu
jsonp 同域post
今天迁移一个站点时遇到一个坑爹问题,同一个jsonp接口在跨域时都能调用成功,但是在同域下调用虽然成功,但是数据却有问题. 此处贴出我的后端代码片段
$mi_id = htmlspecialchars(trim($_GET['mi_id ']));
$mi_cv = htmlspecialchars(trim($_GET['mi_cv ']));
贴出我前端代码片段:
$.aj