webform文件上传、图片水印、验证码
文件上传:
所用控件:FileUpload
使用时的思路:
1、判断用户是否选中了文件
FileUpload.FileName获取选中的文件名,判断长度,如果长度大于零就代表已经选择了文件
JS端:通过ID获取控件,然后控件的value获取选中的文件名
2、将文件保存到服务器上
FileUpload.SaveAs("绝对路径");
3、获得绝对路径
先编写相对路径:比如"UpLoads/abc.txt"
再把路径映射成绝对路径:Server.MapPath("UpLoads/abc.txt");
4、保留原文件的类型和文件名
相对路径改为"UpLoads/" + FileUpload1.FileName;
5、防止文件重名覆盖的问题
"UpLoads/" + Request.Cookies["user"].Value + DateTime.Now.ToString("yyyyMMddhhmmssms") + FileUpload1.FileName;
也就是在文件名前面拼接上登陆的用户名以及操作的时间,精确到毫秒
6、限制用户可选的文件类型
给控件添加属性accept=".jpg,.png,.jpeg,.txt"
但在打开的对话框中,仍然可以选择全部文件,只能通过JS端来限制:
document.getElementById("Button1").onclick = function () {
var fileName = document.getElementById("FileUpload1").value;
var name = fileName.substr(fileName.length - 4, 4);
var name1 = fileName.substr(fileName.length - 5, 5);
if (name != ".jpg" && name != ".png" && name != ".txt" && name1 != ".jpeg")
{
alert("请选择正确的文件!你要找事儿啊??");
return false;
}
};
7、控制上传文件的大小
扩容(系统默认文件最大4MB):
webconfig配置文件中写入
<system.web>
<compilation debug="false" targetFramework="4.0" />
<httpRuntime maxRequestLength="40000" />
</system.web>
注:不要扩的太多,这样上传会占用服务器内存,如果同时上传人数过多会导致服务器内存溢出
限制大小:
C#端限制:
if (FileUpload1.PostedFile.ContentLength>(**))
{
Label1.Text = "文件长度过长!!!";
return;
}
JS端限制:
var f = document.getElementById("FileUpload1");
if (f.files[0].size > (4 * 1024 * 1024)) {
alert("文件过大!!!");
return false;
}
上传图片加水印:
其实是利用C#中的绘制,需要引命名空间System.Drawing;
void Button1_Click(object sender, EventArgs e)
{
//准备画布
System.Drawing.Image img = System.Drawing.Image.FromStream(FileUpload1.FileContent);
//创建画笔
Graphics g = Graphics.FromImage(img); string s = "汉企奇点网络0928";
//画笔的字体
Font f = new Font("微软雅黑",);
//画笔的样式和颜色
Brush b = new SolidBrush(Color.Red);
//在什么位置画
PointF p = new PointF(,);
//画字符串
g.DrawString(s, f, b, p); string sss = "images/"+DateTime.Now.ToString("yyyyMMddhhmmssms")+FileUpload1.FileName; img.Save(Server.MapPath(sss)); Image1.ImageUrl = sss;
}
图片验证码:
单独为验证码图片创建一个窗体,界面上什么都不用写,在后台中绘制
protected void Page_Load(object sender, EventArgs e)
{
Bitmap img = new Bitmap(, );
Graphics g = Graphics.FromImage(img);
Random r = new Random();
//创建一个颜色集合 或者也可以通过RGBA颜色直接随机生成
List<Color> clist = new List<Color>();
clist.Add(Color.Yellow);
clist.Add(Color.Green);
clist.Add(Color.Blue);
clist.Add(Color.Pink);
clist.Add(Color.Orange);
clist.Add(Color.Black);
//绘制背景色
g.FillRectangle(new SolidBrush(clist[r.Next(, clist.Count)]), , , , );
//循环随机绘制干扰线
for (int i = ; i < ; i++)
{
Color ccc = clist[r.Next(, clist.Count)]; Pen ppp = new Pen(new SolidBrush(ccc), r.Next(, )); g.DrawLine(ppp, new PointF(r.Next(, ), r.Next(, )), new PointF(r.Next(, ), r.Next(, )));
}
//准备一些字母数字
string all = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
string s = "";
//从上面随机出四个字符拼接
for (int i = ; i < ; i++)
{
int a = r.Next(all.Length);
s += all.Substring(a, );
}
//存入Session
Session["YZM"] = s;
//绘制出验证码
g.DrawString(s, new Font("微软雅黑", ), new SolidBrush(Color.Red), new PointF(, ));
//通过流把绘制好的验证码输出出去
img.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Png);
Response.End();
}
验证:
void Button1_Click(object sender, EventArgs e)
{
string t1 = TextBox1.Text;
string t2 = Session["YZM"].ToString(); if (t1.ToUpper() == t2.ToUpper())
{
Label1.Text = "验证成功!";
}
else
{
Label1.Text = "验证失败!";
}
}
当验证码不清晰时,点击验证码图片重新生成一个,写在JS里:
<script type="text/javascript">
var a = 0;
document.getElementById("Image1").onclick = function () {
this.setAttribute("src", "yzm.aspx?id=" + a);
a++;
}
</script>
webform文件上传、图片水印、验证码的更多相关文章
- Webform 文件上传、 C#加图片水印 、 图片验证码
文件上传:要使用控件 - FileUpload 1.如何判断是否选中文件? FileUpload.FileName - 选中文件的文件名,如果长度不大于0,那么说明没选中任何文件 js - f.val ...
- C# 文件上传 制作水印
其实C#的文件上传是非常简单的 前台代码 <asp:FileUpload ID="FileUpload1" accept=".jpg,.png,.jpeg" ...
- 富文本编辑器 KindEditor 的基本使用 文件上传 图片上传
富文本编辑器 KindEditor 富文本编辑器,Rich Text Editor , 简称 RTE , 它提供类似于 Microsoft Word 的编辑功能. 常用的富文本编辑器: KindEdi ...
- 2020最新Servlet+form表单实现文件上传(图片)
servlet实现文件上传接受 这几天学了一点文件上传,有很多不会,在网查了许多博客,但是最新的没有,都比较久了 因为我是小白,版本更新了,以前的方法自己费了好久才弄懂,写个随笔方便以后查找 代码奉上 ...
- java 文件上传(图片上传)
1.FTP工具类 代码如下: package com.taotao.common.utils; import java.io.File; import java.io.FileInputStream; ...
- webform 文件上传(头像上传) 隐藏FileUpload
<div> <%-- 核心思想:把FileUpload设为relative,top:-200px;opacity: --%> <div id="localIma ...
- WebForm 文件上传
//Button1的点击事件 //FileUpload1.FileName为所传文件的名字. //以DateTime.Now.ToString("yyyyMMddhhmmssms" ...
- HTTP上传 文件上传 图片上传 HTTP上传原理 文件上传原理 图片上传原理
1.概述 在最初的http协议中,没有上传文件方面的功能.rfc1867(http://www.ietf.org/rfc/rfc1867.txt )为http协议添加了这个功能.浏览器按照此规范将用户 ...
- 【2017-05-30】WebForm文件上传
用 FileUpload控件进行上传文件. <asp:FileUpload ID="FileUpload1" runat="server" /> ...
随机推荐
- windows XP上实现python2.7.5和python3.4.3共存
windows XP上实现python2.7.5和python3.4.3共存过程记录: 1. 首先安装python2.7.5和python3.4.3,两个版本安装顺序不分前后; 2. 检查系统环境变量 ...
- Bookshop(一)数据库连接
连接池配置文件db.properties配置 1.新建一个普通文件->改名为db.properties(后缀)手动添加属性 一般为数据库驱动类.数据库连接地址.用户名.用户密码 driver=c ...
- 在centos 7.0上利用yum一键安装mono
首先我们需要先配置一下yum源中mono的引用说明: 第一步: vi /etc/yum.repos.d/mono.repo 第二步:在刚打开的文件中编辑如下内容 [mono]name=monobase ...
- 腾讯开放平台web第三方登录获取信息类(包含签名)
不清楚具体参数的可以先看下第三方登录的文档: class QQ { //$appid 你的appid //$openid 获取到的唯一的用户openid //$openkey 获取到的openkey ...
- 左右手坐标系转换时R和T的具体形式分析
本文介绍了在计算机视觉的一些应用中,左手坐标系和右手坐标系之间转换时,旋转矩阵R和平移向量T的具体表达形式有哪些变化.
- CapsLock与ctrl的键位修改
windows下修改方式: linux下修改方式: 在用户目录下新建文档命名为keychange.sh 编辑以下内容: remove Lock = Caps_Lock remove Control = ...
- ajax待总结项
1.get与post请求的区别 get请求调用send方法发送数据时,会忽略传入的数据 2.post请求的三种方式区别 1.form表单 2.ajax 3.ajax + FormData 表格绘制,代 ...
- Selenium Xpath Tutorials - Identifying xpath for element with examples to use in selenium
Xpath in selenium is close to must required. XPath is element locator and you need to provide xpath ...
- Appium for iOS setup
windows下appium设置 之前研究了一段时间的appium for native app 相应的总结如下: ...
- ACM/ICPC 之 中国剩余定理+容斥原理(HDU5768)
二进制枚举+容斥原理+中国剩余定理 #include<iostream> #include<cstring> #include<cstdio> #include&l ...