首页 > 代码库 > 文件上传,图片水印,验证码--2017年1月6日
文件上传,图片水印,验证码--2017年1月6日
文件上传:
要使用控件 - FileUpload
1、如何判断是否选中文件?
FileUpload.FileName -
选中文件的文件名,如果长度不大于0,那么说明没选中任何文件
js - f.value.length
2、如何保存到服务器上?
FileUpload.SaveAs("绝对路径");
3、如何获得绝对路径?
先编写相对路径 - "UpLoads/abc.txt"
将相对路径映射成绝对路径 - Server.MapPath("UpLoads/abc.txt");
4、现在只能上传成为txt文件,并且名字只能是abc
如何保留文件原有的名字和文件类型?
"UpLoads/" + FileUpload1.FileName;
5、如何防止重名覆盖的问题?
"UpLoads/" + Request.Cookies["user"].Value + DateTime.Now.ToString("yyyyMMddhhmmssms") + FileUpload1.FileName;
6、如何限制选中文件的类型?
限制普通人,给控件添加属性 - accept=".jpg,.png,.jpeg,.txt"
限制找事的:
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#大文件上传,断点续传。
注意!不要扩的太多,否则多人同时上传大文件会造成服务器内存不足!
限制大小
C#端限制:
if (FileUpload1.PostedFile.ContentLength>(4*1024*1024))
{
Label1.Text = "文件长度过长!!!";
return;
}
JS端限制:
var f = document.getElementById("FileUpload1");
if (f.files[0].size > (4 * 1024 * 1024)) {
alert("文件过大!!!");
return false;
}
上传图片加水印:
绘制:
画布 - 多大
System.Drawing.Image img = System.Drawing.Image.FromStream(FileUpload1.FileContent); Graphics g = Graphics.FromImage(img);
要画什么 string s = "汉企奇点网络0928";
用什么字体画 Font f = new Font("微软雅黑",20);
笔 - 颜色,粗细,样式 Brush b = new SolidBrush(Color.Red); PointF p = new PointF(20,20);
画 g.DrawString(s, f, b, p);
string sss = "images/"+DateTime.Now.ToString("yyyyMMddhhmmssms")+FileUpload1.FileName; img.Save(Server.MapPath(sss)); Image1.ImageUrl = sss;
图片验证制作:
前台: <asp:Image ID="Image1" runat="server" ImageUrl="YZM.aspx" />YZM.aspx后台: Bitmap img = new Bitmap(80, 40); Graphics g = Graphics.FromImage(img); Random r = new Random(); 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(0, clist.Count)]), 0, 0, 80, 40); for (int i = 0; i < 10; i++) { Color ccc = clist[r.Next(0, clist.Count)]; Pen ppp = new Pen(new SolidBrush(ccc), r.Next(1, 5)); g.DrawLine(ppp, new PointF(r.Next(0, 80), r.Next(0, 40)), new PointF(r.Next(0, 80), r.Next(0, 40))); } string all = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; string s = ""; for (int i = 0; i < 4; i++) { int a = r.Next(all.Length); s += all.Substring(a, 1); } Session["YZM"] = s; g.DrawString(s, new Font("微软雅黑", 16), new SolidBrush(Color.Red), new PointF(3, 3)); img.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Png); Response.End();
.
.
文件上传,图片水印,验证码--2017年1月6日