文件上传:
要使用控件 - 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;
}

上传图片加水印:

  1. <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
  2.  
  3. <!DOCTYPE html>
  4.  
  5. <html xmlns="http://www.w3.org/1999/xhtml">
  6. <head runat="server">
  7. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  8. <title></title>
  9. <style type="text/css">
  10. #Image1 {
  11. width: 500px;
  12. }
  13. </style>
  14. </head>
  15. <body>
  16. <form id="form1" runat="server">
  17. <div>
  18. <asp:FileUpload ID="FileUpload1" runat="server" />
  19. <asp:Button ID="Button1" runat="server" Text="上传" />
  20. <br />
  21. <asp:Image ID="Image1" runat="server" />
  22. </div>
  23. </form>
  24. </body>
  25. </html>

后台:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Web.UI;
  6. using System.Web.UI.WebControls;
  7. using System.Drawing;
  8.  
  9. public partial class _Default : System.Web.UI.Page
  10. {
  11. protected void Page_Load(object sender, EventArgs e)
  12. {
  13. Button1.Click += Button1_Click;
  14. }
  15.  
  16. void Button1_Click(object sender, EventArgs e)
  17. {
  18. System.Drawing.Image img = System.Drawing.Image.FromStream(FileUpload1.FileContent);
  19.  
  20. Graphics g = Graphics.FromImage(img);
  21.  
  22. string s = "汉企奇点网络0928";
  23. Font f = new Font("微软雅黑",);
  24. Brush b = new SolidBrush(Color.Red);
  25. PointF p = new PointF(,);
  26.  
  27. g.DrawString(s, f, b, p);
  28.  
  29. string sss = "images/"+DateTime.Now.ToString("yyyyMMddhhmmssms")+FileUpload1.FileName;
  30.  
  31. img.Save(Server.MapPath(sss));
  32.  
  33. Image1.ImageUrl = sss;
  34. }
  35. }

图片验证码:

  1. <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
  2.  
  3. <!DOCTYPE html>
  4.  
  5. <html xmlns="http://www.w3.org/1999/xhtml">
  6. <head runat="server">
  7. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  8. <title></title>
  9. </head>
  10. <body>
  11. <form id="form1" runat="server">
  12. <div>
  13. <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
  14. <asp:Image ID="Image1" runat="server" ImageUrl="YZM.aspx" />
  15. <asp:Button ID="Button1" runat="server" Text="验证" />
  16. <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
  17. </div>
  18. </form>
  19. </body>
  20. </html>
  21. <script type="text/javascript">
  22. var a = ;
  23. document.getElementById("Image1").onclick = function () {
  24. this.setAttribute("src", "yzm.aspx?id=" + a);
  25. a++;
  26. }
  27.  
  28. </script>

后台:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Web.UI;
  6. using System.Web.UI.WebControls;
  7.  
  8. public partial class Default2 : System.Web.UI.Page
  9. {
  10. protected void Page_Load(object sender, EventArgs e)
  11. {
  12. Button1.Click += Button1_Click;
  13. }
  14.  
  15. void Button1_Click(object sender, EventArgs e)
  16. {
  17. string t1 = TextBox1.Text;
  18. string t2 = Session["YZM"].ToString();
  19.  
  20. if (t1.ToUpper() == t2.ToUpper())
  21. {
  22. Label1.Text = "验证成功!";
  23. }
  24. else
  25. {
  26. Label1.Text = "验证失败!";
  27. }
  28.  
  29. }
  30. }

验证码图片:

(前台不用写)

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Web.UI;
  6. using System.Web.UI.WebControls;
  7. using System.Drawing;
  8.  
  9. public partial class YZM : System.Web.UI.Page
  10. {
  11. protected void Page_Load(object sender, EventArgs e)
  12. {
  13. Bitmap img = new Bitmap(, );
  14. Graphics g = Graphics.FromImage(img);
  15. Random r = new Random();
  16. //单独加颜色
  17. //List<Color> clist = new List<Color>();
  18. //clist.Add(Color.Yellow);
  19. //clist.Add(Color.Green);
  20. //clist.Add(Color.Blue);
  21. //clist.Add(Color.Pink);
  22. //clist.Add(Color.Orange);
  23. //clist.Add(Color.Black);
  24.  
  25. //g.FillRectangle(new SolidBrush(clist[r.Next(0, clist.Count)]), 0, 0, 80, 40);
  26.  
  27. //for (int i = 0; i < 10; i++)
  28. //{
  29. // Color ccc = clist[r.Next(0, clist.Count)];
  30.  
  31. // Pen ppp = new Pen(new SolidBrush(ccc), r.Next(1, 5));
  32.  
  33. // g.DrawLine(ppp, new PointF(r.Next(0, 80), r.Next(0, 40)), new PointF(r.Next(0, 80), r.Next(0, 40)));
  34. //}
  35. //随机数颜色rgba
  36. Color yanse = Color.FromArgb(r.Next(), r.Next(), r.Next(), r.Next());
  37. g.FillRectangle(new SolidBrush(yanse), , , , );
  38. for (int i=;i<;i++)
  39. {
  40. Color yansel = Color.FromArgb(r.Next(), r.Next(), r.Next(), r.Next());
  41. Pen ppp = new Pen(new SolidBrush(yansel), r.Next(, ));
  42. g.DrawLine(ppp, new PointF(r.Next(, ), r.Next(, )), new PointF(r.Next(, ), r.Next(, )));
  43. }
  44.  
  45. string all = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
  46. string s = "";
  47.  
  48. for (int i = ; i < ; i++)
  49. {
  50. int a = r.Next(all.Length);
  51. s += all.Substring(a, );
  52. }
  53.  
  54. Session["YZM"] = s;
  55.  
  56. g.DrawString(s, new Font("微软雅黑", ), new SolidBrush(Color.Red), new PointF(, ));
  57.  
  58. img.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Png);
  59. Response.End();
  60.  
  61. }
  62. }

Webform 文件上传、 C#加图片水印 、 图片验证码的更多相关文章

  1. webform文件上传、图片水印、验证码

    文件上传: 所用控件:FileUpload 使用时的思路: 1.判断用户是否选中了文件 FileUpload.FileName获取选中的文件名,判断长度,如果长度大于零就代表已经选择了文件 JS端:通 ...

  2. Django文件上传【单个/多个图片上传】

    准备工作 python:3.6.8 django:2.2.1 新建django项目 确定项目名称.使用的虚拟环境[当然这个也可以后期修改].app的名称 创建成功,选择在新的窗口中打开 图片上传 修改 ...

  3. webform 文件上传(头像上传) 隐藏FileUpload

    <div> <%-- 核心思想:把FileUpload设为relative,top:-200px;opacity: --%> <div id="localIma ...

  4. WebForm 文件上传

    //Button1的点击事件 //FileUpload1.FileName为所传文件的名字. //以DateTime.Now.ToString("yyyyMMddhhmmssms" ...

  5. 【2017-05-30】WebForm文件上传

    用 FileUpload控件进行上传文件. <asp:FileUpload ID="FileUpload1"  runat="server" /> ...

  6. WebForm文件上传

    用 FileUpload控件进行上传文件. <asp:FileUpload ID="FileUpload1"  runat="server" /> ...

  7. 【2017-05-30】WebForm文件上传。从服务端删除文件

    用 FileUpload控件进行上传文件. <asp:FileUpload ID="FileUpload1"  runat="server" /> ...

  8. springboot整合ueditor实现图片上传和文件上传功能

    springboot整合ueditor实现图片上传和文件上传功能 写在前面: 在阅读本篇之前,请先按照我的这篇随笔完成对ueditor的前期配置工作: springboot+layui 整合百度富文本 ...

  9. 基于Jcrop的图片上传裁剪加预览

    最近自己没事的时候研究了下图片上传,发现之前写的是有bug的,这里自己重新写了一个! 1.页面结构 <!DOCTYPE html> <html lang="en" ...

随机推荐

  1. ScrollView控件实现屏幕滚动

    滚动视图是指当拥有很多内容,屏幕显示不完全时,需要通过滚动来显示完整的视图 ScrollView的种类: (1)水平滚动视图:HorizontalScrollView (2)垂直滚动视图:Scroll ...

  2. 怎样看懂Oracle的执行计划

    怎样看懂Oracle的执行计划 一.什么是执行计划 An explain plan is a representation of the access path that is taken when ...

  3. table sorting–angularjs

    1: <script type="text/javascript" ng:autobind 2: src="http://code.angularjs.org/0. ...

  4. [NOIP2011]聪明的质监员 题解

    题目大意: 额--貌似蛮清晰的,就不赘述了. 思路: 首先不难发现M越大Y越小,因此可以二分答案(方向不要弄错),二分出最小的不小于S的Y即可.而计算Y时可用前缀和O(n+m)求得.两种边界情况也要考 ...

  5. map和hashmap中的区别

    map is a interfacehashmap is a class that implements that interface.that is the basic different.

  6. python字典

    1.字典解释 映射:通过名字来引用值得数据结构,字典是python中唯一内建的映射类型,字典中的值并没有特殊的顺序,都存储在一个特定的键下,键可以使数字.字符串.元组,通过查找某个特定键,就可以找到对 ...

  7. linux install Theano+Tensorflow+Keras

    安装过程中,网络状态一定要好,如果安装过程中出现time out的提示信息,今天就可以洗洗睡啦,等明天网络状态好的时候再安装. 安装过程出现不知名的错误的时候,执行第一步,update一下 1.#up ...

  8. dede调用img图片

    1.默认的index.htm调用: {dede:arclist row='3' titlelen='30' typeid='1'} <div class="swiper-slide&q ...

  9. Python In Action:二、 最小的GUI程序:麻雀虽小,五脏俱全

    Python in Action第二个例子,倒是很简单,却是最基本的GUI程序框架,里面有最基本的实现GUI流程 import wx class MyApp(wx.App): def OnInit(s ...

  10. Sublime 常用插件简介

    Sublime   常用插件简介 emmet: 前端必备神器.花个十几分钟学下Emmet语法 ,就可以极大提高web开发者HTML和CSS工作效率啦.一句话,牛逼---必备 CSS3: CSS3语法高 ...