B/S----文件上传,图片水印,验证码

文件上传:

//把相对路径变成绝对路径。
string absolutePath = Server.MapPath(relativePath);

FileUpload控件:
    属性:
        FileName:文件名
        HasFile:bool 是否选中了文件
        FileBytes:要上传文件的二进制数据
    方法:
        SaveAs(string 绝对路径):上传,另存为。

一、上传到硬盘文件夹
(一)传单个文件
    第一步:准备好文件及路径:
        //把之前在客户端的文件名给取出来
        string fileName = FileUpload1.FileName;

//防止文件重名
        fileName = DateTime.Now.ToString("yyyyMMddhhmmsss") + fileName;

//把相对路径转化为绝对路径
        string path = Server.MapPath("uploads/" + fileName);

第二步:执行上传:
        //上传
        FileUpload1.SaveAs(path);   //参数必须根路径
    
    注意:
    1.如何防止文件重名?
    2.如何防止同一时间点不同用户传统一文件名?
        每个客户端登陆都有自己的一个ssesion空间,再加上session["用户名"(或"key名")]区分。
(二)传多个文件:
思路:遍历表单中所有的FileUpload控件,如果选择文件就上传

int index = 0;
        foreach (Control ctrl in form1.Controls)
        {
            if (ctrl is FileUpload)
            {
                index++;
                //取得每个上传控件
                FileUpload upload = ctrl as FileUpload;
                //上传控件中选上文件了
                if (upload.HasFile)
                {
                    //做文件路径出来
                    string path = Server.MapPath("uploads/" + DateTime.Now.ToString("yyyyMMddhhmmss") + index.ToString("00") + upload.FileName);

//上传
                    upload.SaveAs(path);
                }
            }
        }

二、上传到数据库Image字段:
(一)传到数据库去
1.做数据库的操作代码。DA Data
Image字段对应在程序里是byte[]类型

2.做界面上的代码。
a.把界面的值取出来
    FileUpload1.FileBytes - 用来获得上传文件的二进制数据。
b.送到数据库去

(二)从数据库中找出来,显示出来

法一:缺点:会生成垃圾文件
在服务端生成一个JPG,把这个JPG的路径赋给Image控件

//从数据库中把数据取出来
        PictureDA da = new PictureDA();
        PictureData data=da.Select(Convert.ToInt32(TextBox1.Text));

//流
        string temp = Server.MapPath("imag/temp.jpg");
        FileStream fs = new FileStream(temp, FileMode.Create);
        fs.Write(data.Fill, 0, data.Fill.Length);
        fs.Close();
        //显示
        Image1.ImageUrl = "imag/temp.jpg"

法二:单独做一个用来显示图片二进制数据的页面。把这个页面赋给Image控件。
新页面:
        string ids = Request["id"].ToString();

PictureData data = new PictureDA().Select(Convert.ToInt32(ids));
        if (data!=null)
        {
            Byte[] buff=data.Fill;
            Response.OutputStream.Write(buff,0,buff.Length);
            Response.End();
        }

显示图片的按钮:
   Image1.ImageUrl = "Default2.aspx?id="+TextBox1.Text;

上传图片加水印:
        //一、从上传数据中,转化成图片对象
        Stream s = FileUpload1.FileContent;
        System.Drawing.Image img = System.Drawing.Image.FromStream(s);
        //二、对图片对象进行画水印
        //1.造笔
        SolidBrush brush = new SolidBrush(Color.Yellow);
        //2.造字体
        Font font = new Font("微软雅黑", 18);
        //3.找到绘图区域
        Graphics g = Graphics.FromImage(img);
        //4.确定开始画的位置
        float x = 0, y = 0;
        SizeF size = g.MeasureString("http:\\www.hao123.com",font);
        x = img.Width - size.Width;
        y = img.Height - size.Height;
        //5.开始画
        g.DrawString("http:\\www.hao123.com", font, brush, x, y);

//三、图片对象另存为硬盘上去
        string filename = FileUpload1.FileName;
        string path = Server.MapPath("imag/" +DateTime.Now.ToString("yyyyMMdd")+ filename);
        img.Save(path);

验证码:注意using System.Drawing;
                    using System.IO;

验证码页面

public partial class YZM : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //造一个图片
        Bitmap img = new Bitmap(60, 30);
        //生成个随机数
        string str = "abcdefghigklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        Random random = new Random();
        string code = "";
        for (int i = 0; i < 4; i++)
        {
            int start = random.Next(str.Length);
            code += str.Substring(start, 1);
        }
        //把随机数放到图片上
        //造笔
        SolidBrush brush = new SolidBrush(Color.White);
        //造字
        Font font = new Font("宋体",15);
        //找到绘图区域
        Graphics g = Graphics.FromImage(img);
        //找位置

        //a.把图片背景涂白
        g.FillRectangle(brush, 0, 0, 60, 30);
        //b.给画笔换个颜色
        brush.Color = Color.Red;
        //开始画
        g.DrawString(code,font,brush,0,0);
        //把图片保存到输出流中去
        img.Save(Response.OutputStream,System.Drawing.Imaging.ImageFormat.Jpeg);
    }
}

主页面不写代码,但ImageUrl="YZM.aspx"调用验证码页面;onclick="changPIC()" JS代码每次点击都换图。

<body>
    <form id="form1" runat="server">
    <div>

        验证码:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        <asp:Image ID="Image1" runat="server"  ImageUrl="YZM.aspx" onclick="changPIC()"/>
        <br />
        <asp:Button ID="Button1" runat="server" Text="Button" />

    </div>
    </form>
</body>

JAVASCRIPT:

<script language="javascript">
        function changPIC()
        {
            var img = document.getElementById("Image1");
            img.setAttribute("src","YZM.aspx?id="+Math.random());
        }
    </script>
时间: 2024-10-03 21:05:48

B/S----文件上传,图片水印,验证码的相关文章

webform文件上传加水印

1.文件上传加水印 页面代码: 后台代码: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Drawing; public partial class _Default : System.Web.UI.Page { protected void

文件上传,图片加水印

文件上传: 所用控件:FileUpload 使用时的思路: 1.判断用户是否选中了文件 FileUpload.FileName获取选中的文件名,判断长度,如果长度大于零就代表已经选择了文件 JS端:通过ID获取控件,然后控件的value获取选中的文件名 2.将文件保存到服务器上 FileUpload.SaveAs("绝对路径"); 3.获得绝对路径 先编写相对路径:比如"UpLoads/abc.txt" 再把路径映射成绝对路径:Server.MapPath(&quo

文件上传&amp;画水印

文件上传: //把相对路径变成绝对路径.string absolutePath = Server.MapPath(relativePath); FileUpload控件: 属性: FileName:文件名 HasFile:bool 是否选中了文件 FileBytes:要上传文件的二进制数据 方法: SaveAs(string 绝对路径):上传,另存为. 一.上传到硬盘文件夹(一)传单个文件 第一步:准备好文件及路径: //把之前在客户端的文件名给取出来 string fileName = Fil

关于文件上传-图片上传

本次开发采用uploader插件   需要在前台引入 使用该插件的 Uploader.swf文件(用于使用时js指向) 在wingsUploader.js 中对uploader插件进行设置 (function($) { // // 设置属性 var uploader; var ratio = window.devicePixelRatio || 1; //用于缩略图 // var thumbnailWidth = 50 * ratio; //缩略图的宽 // var thumbnailHeigh

spring 文件上传 + 图片缩放 + 图片截取(头像功能)

实现图片上传 用户必须能够上传图片,因此需要文件上传的功能.比较常见的文件上传组件有Commons FileUpload,这里我们选择Commons FileUpload. 首先是页面的form表单设置,记住要配method和enctype属性哦!! <form action="upload.do" method="post"            enctype="multipart/form-data">           &l

文件上传加水印

在form表单写的代码(客户端源码) 'FileUpload'控件:选择文件用的,点击可以选择文件 'Image'控件:展示图片用的,所选的文件在这里展示 accept=".jpg,.png,.jpeg"图片文件加限制的属性 <form id="form1" runat="server"> <asp:FileUpload ID="FileUpload1" runat="server" ac

php 文件上传(图片)

<?php /****************************************************************************** 参数说明: $max_file_size : 上传文件大小限制, 单位BYTE $destination_folder : 上传文件路径 $watermark : 是否附加水印(1为加水印,其他为不加水印); 使用说明: 1. 将PHP.INI文件里面的"extension=php_gd2.dll"一行前面的;

HTTP上传 文件上传 图片上传 HTTP上传原理 文件上传原理 图片上传原理

1.概述 在最初的http协议中,没有上传文件方面的功能.rfc1867(http://www.ietf.org/rfc/rfc1867.txt )为http协议添加了这个功能.浏览器按照此规范将用户指定的文件发送到服务器.服务器再按照此规范,解析出文件.大部分的http server都支持此协议,比如tomcat(本文用的是Spring MVC,即HttpServelet来接收请求). 网上很多博客,以及插件的做法,是建一个iframe用户无刷新请求,再建一个form用于提交.但其实可以直接用

PHP核心编程--文件上传(包含多文件上传)

一.单文件上传 图片上传界面: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <form name='frm'action="./uploadSave.php" method="p

Webform 文件上传、 C#加图片水印 、 图片验证码

文件上传:要使用控件 - FileUpload 1.如何判断是否选中文件? FileUpload.FileName - 选中文件的文件名,如果长度不大于0,那么说明没选中任何文件 js - f.value.length 2.如何保存到服务器上? FileUpload.SaveAs("绝对路径"); 3.如何获得绝对路径? 先编写相对路径 - "UpLoads/abc.txt" 将相对路径映射成绝对路径 - Server.MapPath("UpLoads/a