Asp.net 文件上传基类(取得文件后缀名,保存文件,加入文字水印)

Java实战:基于Spring Boot的TOTP多因素认证完整实现与安全实践 多因素认证(MFA)是提升账号安全的关键技术,通过在密码之外增加动态验证环节,有效防御密码泄露和钓鱼攻击。其核心原理是结合用户所知(密码)、所有(设备)和所是(生物特征)中的多个因素进行身份验证。TOTP(基于时间的一次性密码)作为MFA的主流技术方案,基于HMAC算法和共享密钥,通过时间同步生成动态验证码,实现了无需网络、标准开放的安全验证。在Java开发中,结合Spring Boot框架可以高效构建TOTP服务,通过生成共享密钥、实现动态截断算法、处理时钟容差等步骤,为Web应用、API网关等场景提供可 阅读详情

/############################################
版权声明:
文章内容为本站编辑,创作.你可以任意转载、发布、使用但请务必标明文章原始出处及本声明
http://www.opent.cn  作者:浪淘沙
############################################/

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Drawing;
using System.IO;
using System.Drawing.Imaging;

namespace EC
{
    /// <summary>
    /// 上传类
    /// </summary>
    public class UploadObj
    {

        public UploadObj()
        {
            //
            // TODO: 在此处添加构造函数逻辑
            //
        }
        /// <summary>
        /// 允许文件上传的类型枚举
        /// </summary>
        public enum FileType
        {
           jpg,gif,bmp,png           
        }

        #region 取得文件后缀
        /// <summary>
        /// 取得文件后缀
        /// </summary>
        /// <param name="filename">文件名称</param>
        /// <returns></returns>
        public static string GetFileExtends(string filename)
        {
            string ext = null;
            if (filename.IndexOf('.') > 0)
            {
                string[] fs = filename.Split('.');
                ext = fs[fs.Length - 1];
            }
            return ext;
        }
        #endregion

        #region 检测文件是否合法
        /// <summary>
        /// 检测上传文件是否合法
        /// </summary>
        /// <param name="fileExtends">文件后缀名</param>
        /// <returns></returns>
        public static bool CheckFileExtends(string fileExtends)
        {
            bool status = false;
            fileExtends = fileExtends.ToLower();
            string[] fe = Enum.GetNames(typeof(FileType));
            for (int i = 0; i < fe.Length; i++)
            {
                if (fe[i].ToLower() == fileExtends)
                {
                    status = true;
                    break;
                }
            }
            return status;
        }
        #endregion

        #region 保存文件
       /// <summary>
       /// 保存文件
       /// </summary>
       /// <param name="fpath">全路径,Server.MapPath()</param>
       /// <param name="myFileUpload">上传控件</param>
       /// <returns></returns>
        public static string PhotoSave(string fpath,FileUpload myFileUpload)
        {  
            string s = "";
            string fileExtends = "";
            string fileName = myFileUpload.FileName;
            if (fileName != "")
            {
                //取得文件后缀
                fileExtends = EC.UploadObj.GetFileExtends(fileName);
                if (!EC.UploadObj.CheckFileExtends(fileExtends))
                {
                    EC.MessageObject.ShowPre("上传文件类型不合法");                 
                }
                Random rd = new Random();
                s = EC.RandomObject.DateRndName(rd) + "." + fileExtends;
                string file = fpath + "//" + s;
                try
                {
                    myFileUpload.SaveAs(file);
                }
                catch (Exception ee)
                {
                    throw new Exception(ee.ToString());
                }
            }
            return s;
        }

        #endregion

        #region 加入文字水印

        /// <summary>
        /// 加入文字水印
        /// </summary>
        /// <param name="fileName">文件名称路径(全路径)</param>
        /// <param name="text">文件</param>
        public void AddTextToImg(string fileName, string text)
        {
            if (!File.Exists(fileName))
            {
                throw new FileNotFoundException("文件不存在");
            }
            if (text == string.Empty)
            {
                return;
            }
            //判断文件类型是否为图像类型

            System.Drawing.Image image = System.Drawing.Image.FromFile(fileName);
            Bitmap bitmap = new Bitmap(image, image.Width, image.Height);
            Graphics g = Graphics.FromImage(bitmap);
            float fontSize = 12.0f;//字体大小
            float textWidth = text.Length * fontSize;//文本的长度
            //下面定义一个矩形区域,以后在这个矩形里面画上白底黑字
            float rectX = 0;
            float rectY = 0;
            float rectWidth = text.Length * (fontSize + 8);
            float rectHeight = fontSize + 8;
            //声明矩形域
            RectangleF textArea = new RectangleF(rectX, rectY, rectWidth, rectHeight);
            Font font = new Font("宋体", fontSize);//定义字体
            Brush whiteBrush = new SolidBrush(Color.White);//白笔刷,画文字用
            Brush blackBrush = new SolidBrush(Color.Black);//黑笔刷,画背景用
            g.FillRectangle(blackBrush, rectX, rectY, rectWidth, rectHeight);
            g.DrawString(text, font, whiteBrush, textArea);
            MemoryStream ms = new MemoryStream();
            bitmap.Save(ms, ImageFormat.Jpeg);
            //输出处理后的图像,这里为了演示方便,我将图片显示在页面中了
            //Response.Clear();
            //Response.ContentType = "image/jpeg";
            //Response.BinaryWrite(ms.ToArray());
            g.Dispose();
            bitmap.Dispose();
            image.Dispose();       
        }
        #endregion
    }
}

 
 
BooTOTP:一个用于基于时间的一次性密码(TOTP)生成的Spring Boot库 BooTOTP 一个用于基于时间的一次性密码(TOTP)生成的Spring Boot库 基本用法 import io.jdg.totp.EnableOneTimePasswordGeneration ; import org.springframework.boot.autoconfigure.SpringBootApplication ; import org.springframework.boot.builder.SpringApplicationBuilder ; @SpringBootApplication @EnableOneTimePasswordGeneration public class SampleApp { public static void main ( String [] a ) { new SpringApplicationBuilder ( Sam 立即下载

相关推荐

音乐频谱灯的硬件艺术:从STM32到SK9822LED的工程美学

本文探讨了基于STM32微控制器和SK9822 LED的音乐频谱灯硬件设计与实现。通过ADC采集音频信号,利用FFT算法进行频谱分析,并驱动LED阵列呈现动态视觉效果,展现了硬件工程与艺术美学的完美融合。

Pepper的专栏 217

SpringBoot + mybatis-plus + HMACOTP 实现双因素身份验证功能

在上述代码中,我们创建了一个LoginController,调用 /secure/generate-otp 请求获取 指定用户 admin 获取 otp值,根据生成的otp值,处理POST请求/secure/login。双因素身份验证(Two-Factor Authentication,简称2FA)是一种增强用户身份验证安全性的方法,通常结合使用密码和另外一种身份验证因素,如一次性密码(OTP)来进行验证。该方法会尝试验证当前时间的5分钟内时间戳的HMACOTP,允许一定的时间差。

竹林幽深 1111

用COMSOL计算复合材料板频散曲线:从建模到绘图全流程

导波在板结构中传播时,不同频率成分的速度不同,即频散现象。理解频散曲线是识别导波模态、确定相速度与群速度的基础,也是无损检测和结构健康监测中信号解读的关键。对于碳纤维增强复合材料等各向异性板,频散关系更加复杂,传统解析方法难以求解,数值仿真成为主流手段。通过COMSOL结合周期性边界条件与特征频率扫描,可以高效计算出复合材料板的频散曲线,进而绘制相速度和群速度随频率变化的图谱,为实验模态识别、换能器激励频率选择提供依据。本文以一个2毫米单向碳纤维板为例,详细介绍几何建模、材料参数设置、网格收敛验证、参数扫描

weixin_31412781的博客 235

ASP.NET 获取文件、路径的后缀名(扩展名)

获取路径的后缀名(扩展名) System.IO string Url = "1ca5dedd9438d742.jpg"; string path= Path.GetExtension(Url); //运行结果为 .jpg //如果 path 为 null,则返回 null。 //如果 path 不具有扩展名信息,则返回 string.Empty ...

随性的豆干的博客 2347

Windows系统的Mamba环境配置详细教程(状态空间模型)

causal_conv1d也是安装mamba的依赖必须库。安装完成后,通过pip list可以查看到安装的库。Triton是安装mamba的依赖,需要先安装。上述工作准备好后,按下面步骤安装。直接根据离线文件安装即可。是自己的虚拟环境名字。

2301_77831163的博客 3677

晟矽微MC32F7361定时器的使用案例说明

110所以TIMER0所用的频率是FCPU的1/64,也就是8/64MHZ. 为1/8MHZ。//io口下拉电阻 1:enable 0:disablea。//io口上拉电阻 1:enable 0:disable。//io口下拉电阻 1:enable 0:disable。//io口上拉电阻 1:enable 0:disable。//io口下拉电阻 1:enable 0:disable。//io口上拉电阻 1:enable 0:disable。

liyanfei123456的博客 1130

多文件上传设计

一将文件存到项目路径下,数据库保存图片的路径 多文件上传思路是,上传一个文件服务器上同时入库表,然后会callback返回文件信息,js将文件ID插入input fileId,提交整个表单的时候,做sqlupdate将文件的from_id,from_table关联上。 设计优点:根据from_id,from_table可以很方便的判断服务器上的文件哪些是无用的临时文件,哪些是用户的有用文件,可以定期做文件清理操作 CREATE TABLE `dj_attachment` ( `file_id..

hudeyong926的专栏 771

蓝桥杯STM32G431RBT6学习——GPIO

蓝桥杯STM32G431RBT6学习——GPIO

weixin_44098974的博客 2234

ASP.NET 给图片动态添加文字水印

文件结构图: Default.aspx  这里只是添加了几个图片 下面这张图片不存在显示程序指定的默认图片   WaterMarkHandler.cs   using Syste

houxh86的专栏 1776

CNC数控机床数据采集,CNC数据采集 设备联网 车间数字化

cnc数据采集 cnc机床数据采集 免受权采集 设备联网

weixin_38175277的博客 2773

高速串行信号仿真避坑指南:为什么你的SIwave Xnet设置了却不出结果?

本文深入解析SIwave中Xnet功能在高速串行信号仿真中的常见问题,包括模型缺失、网络不完整和端口设置错误等关键误区。通过详细的电路元件模型验证、网络完整性检查及端口配置指南,帮助工程师有效解决仿真不出结果的问题,提升信号完整性分析效率。

weixin_29218963的博客 252

asp.net为图片添加文字水印

无标题页    上传图片:  生成图片宽度:500  生成图片高度:500 每行显示字符数:20   水印文字:在人生的道路上,如果你没有耐心去等待成功的到来,那么你

Sunny 1351

基于深度学习实现实时视频目标检测

实时视频目标检测是计算机视觉领域的研究热点之一,其应用场景包括智能监控、自动驾驶、机器人视觉等多个领域。深度学习技术的快速发展使得实时视频目标检测变得更加可行和准确。本文提出一种基于深度学习实现的实时视频目标检测系统,使用Python和OpenCV作为开发工具,具有高效、准确和实时的特点。 本系统的主要需求是实现实时视频目标检测功能,可以在不同的应用场景中使用。具体的需求如下:2.1 视频输入本系统需要从摄像头或视频文件中获取实时视频流,并对视频流中的目标进行检测和跟踪。2.2 目标检测本系统需要使用深度学

分享毕业设计的案例和论文 1941

Asp.net文件上传类

 using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebPart

人生何适不艰难 赖是胸中万斛宽 683

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

【ASP.NET】——文件上传

【文件上传】 建立一个html文件FileUp.html &lt;form method="post" action="ProcessFileUp.ashx" enctype="multipart/form-data"&gt; &lt;input type="file" name="fileUp"/&gt; &lt;inpu

张文慧 期待每一天更好的自己 271

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

asp.net 添加文字水印

///         /// 添加水印图片         ///         /// 原始图片路径         /// 保存图片路径\         ///   /// 保存图片名称         private void AddTextToImg(string fileName,string imageSYurl,string imageSYname)     

wyz_199102的专栏 540

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Asp.net给图片加上水印效果

private void Btn_Upload_Click(object sender, System.EventArgs e) { if(UploadFile.PostedFile.FileName.Trim()!="") { //上传文件 string extensi

acaoguangke的专栏 2641
上一篇: Asp.Net 文件操作基类(读取,删除,批量拷贝,批量删除,写入)
下一篇: DataGrid,DataList学习笔记
RemanticMemory
博客等级 码龄20年 10粉丝 129原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值