`
风火山林
  • 浏览: 147253 次
  • 性别: Icon_minigender_1
  • 来自: 汕尾
最近访客 更多访客>>
社区版块
存档分类
最新评论

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.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Text;
using System.Drawing;

/// <summary>
/// PictureCommand 的摘要说明
/// </summary>
public class PictureCommand
{
public PictureCommand()
{
   //
   // TODO: 在此处添加构造函数逻辑
   //
}

    private static string _MSG;
    private string _ofullname = "0";
    private string _tfullname = "0";
    private string _ofilename = "0";
    private string _tfilename = "0";

    private int _limitwidth = 3072;
    private int _limitheight = 2304;

    private int _twidth = 100;
    private int _theight = 100;

    private int _size = 3000000;
    private bool _israte = true;

    private string _path = "UpdateImage";

    /// <summary>
    /// 信息
    /// </summary>
    public static string MSG
    {
        get { return _MSG; }
        set { _MSG = value; }
    }

    /// <summary>
    /// 保存时的完整路径.原图
    /// </summary>
    public string OFullName
    {
        get { return _ofullname; }
        set { _ofullname = value; }
    }

    /// <summary>
    /// 保存时的完整路径.缩略图
    /// </summary>
    public string TFullName
    {
        get { return _tfullname; }
        set { _tfullname = value; }
    }

    /// <summary>
    /// 保存时的图片名称.原图
    /// </summary>
    public string OFileName
    {
        get { return _ofilename; }
        set { _ofilename = value; }
    }

    /// <summary>
    /// 保存时的图片名称.缩略图
    /// </summary>
    public string TFileName
    {
        get { return _tfilename; }
        set { _tfilename = value; }
    }

    /// <summary>
    /// 限定宽度
    /// </summary>
    public int LimitWidth
    {
        get { return _limitwidth; }
        set { _limitwidth = value; }
    }

    /// <summary>
    /// 限定高度
    /// </summary>
    public int LimitHeight
    {
        get { return _limitheight; }
        set { _limitheight = value; }
    }

    /// <summary>
    /// 缩略图宽度
    /// </summary>
    public int TWidth
    {
        get { return _twidth; }
        set { _twidth = value; }
    }

    /// <summary>
    /// 缩略图高度
    /// </summary>
    public int THeight
    {
        get { return _theight; }
        set { _theight = value; }
    }

    /// <summary>
    /// 文件大小
    /// </summary>
    public int Size
    {
        get { return _size; }
        set { _size = value; }
    }

    /// <summary>
    /// 是否成比例
    /// </summary>
    public bool IsRate
    {
        get { return _israte; }
        set { _israte = value; }
    }

    /// <summary>
    /// 是否生成缩略图
    /// </summary>
    public bool IsCreate
    {
        get { return _israte; }
        set { _israte = value; }
    }

    /// <summary>
    /// 存放图片的文件夹名称
    /// </summary>
    public string Path
    {
        get { return _path; }
        set { _path = value; }
    }

    /// <summary>
    /// 图片上传(默认:"等比压缩,限定上传尺寸2048*1536,缩略图尺寸100*100,限定上传大小1MB,存放在根目录UpdateImage中")
    /// </summary>
    /// <param name="UploadFile">文件上传控件</param>
    /// <returns>返回是否成功保存图片</returns>
    public bool UpLoadIMG(FileUpload UploadFile)
    {
        if (UploadFile.HasFile)//检查是否已经选择文件
        {
            string filename = UploadFile.FileName.ToLower();
            int i = filename.LastIndexOf(".");
            filename = filename.Substring(i, filename.Length - i);

            if (!(filename == ".jpg" || filename == ".jpeg" || filename == ".gif" || filename == ".png" || filename == ".bmp"))
            {
                MSG = "不受支持的类型,请重新选择!";
                return false;
            }//检查上传文件的格式是否有效

            if (UploadFile.PostedFile.ContentLength == 0 || UploadFile.PostedFile.ContentLength >= Size)
            {
                MSG = "指定的文件大小不符合要求!";
                return false;
            }//检查图片文件的大小

            //生成原图
            Stream oStream = UploadFile.PostedFile.InputStream;
            System.Drawing.Image oImage = System.Drawing.Image.FromStream(oStream);

            int owidth = oImage.Width; //原图宽度
            int oheight = oImage.Height; //原图高度

            if (owidth > LimitWidth || oheight > LimitHeight)
            {
                MSG = "超过允许的图片尺寸范围!";
                return false;
            }//检查是否超出规定尺寸

            if (IsRate)
            {
                //按比例计算出缩略图的宽度和高度
                if (owidth >= oheight)
                {
                    THeight = (int)Math.Floor(Convert.ToDouble(oheight) * (Convert.ToDouble(TWidth) / Convert.ToDouble(owidth)));//等比设定高度
                }
                else
                {
                    TWidth = (int)Math.Floor(Convert.ToDouble(owidth) * (Convert.ToDouble(THeight) / Convert.ToDouble(oheight)));//等比设定宽度
                }
            }

            //生成缩略原图
            Bitmap tImage = new Bitmap(TWidth, THeight);
            Graphics g = Graphics.FromImage(tImage);
            g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; //设置高质量插值法
            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;//设置高质量,低速度呈现平滑程度
            g.Clear(Color.Transparent); //清空画布并以透明背景色填充
            g.DrawImage(oImage, new Rectangle(0, 0, TWidth, THeight), new Rectangle(0, 0, owidth, oheight), GraphicsUnit.Pixel);


            Random orandom = new Random();
            string oStringRandom = orandom.Next(9999).ToString();//生成4位随机数字

            //格式化日期作为文件名
            DateTime oDateTime = new DateTime();
            oDateTime = DateTime.Now;
            string oStringTime = oDateTime.ToString();
            oStringTime = oStringTime.Replace("-", "");
            oStringTime = oStringTime.Replace(" ", "");
            oStringTime = oStringTime.Replace(":", "");

            OFileName = "o" + oStringTime + oStringRandom + filename;
            TFileName = "t" + oStringTime + oStringRandom + filename;

            string SavePath = HttpContext.Current.Server.MapPath("~") + "\\" + Path + "\\";
            if (!Directory.Exists(SavePath))
            {
                Directory.CreateDirectory(SavePath);//在根目录下建立文件夹
            }

            OFullName = SavePath + OFileName;
            TFullName = SavePath + TFileName;
            //开始保存图片至服务器
            try
            {
                switch (filename)
                {
                    case ".jpeg":
                    case ".jpg":
                        {
                            oImage.Save(OFullName, System.Drawing.Imaging.ImageFormat.Jpeg);
                            tImage.Save(TFullName, System.Drawing.Imaging.ImageFormat.Jpeg);
                            break;
                        }

                    case ".gif":
                        {
                            oImage.Save(OFullName, System.Drawing.Imaging.ImageFormat.Gif);
                            tImage.Save(TFullName, System.Drawing.Imaging.ImageFormat.Gif);
                            break;
                        }

                    case ".png":
                        {
                            oImage.Save(OFullName, System.Drawing.Imaging.ImageFormat.Png);
                            tImage.Save(TFullName, System.Drawing.Imaging.ImageFormat.Png);
                            break;
                        }

                    case ".bmp":
                        {
                            oImage.Save(OFullName, System.Drawing.Imaging.ImageFormat.Bmp);
                            tImage.Save(TFullName, System.Drawing.Imaging.ImageFormat.Bmp);
                            break;
                        }
                }
                MSG = "图片上传成功!";
                //保存路径+完整文件名
                string _SavePath = "/" + Path + "/";
                OFullName = _SavePath + OFileName;
                TFullName = _SavePath + TFileName;
                return true;
            }
            catch (Exception ex)
            {
                MSG = ex.Message;
                return false;
            }
            finally
            {
                //释放资源
                oImage.Dispose();
                g.Dispose();
                tImage.Dispose();
            }
        }
        else
        {
            MSG = "请先选择需要上传的图片!";
            return false;
        }
    }
}

调用:

只要先实例化类之后,设置想要的属性。
UpLoadIMG(this.fileupload1)
输入文件上传控件的ID作为参数就可以了。


属性:
1.原始图片完整路径
2.原始图片名称
3.缩略图完整路径
4.缩略图名称
5.限定宽度
6.限定高度
7.缩略图宽度
8.缩略图高度
9.限定大小
10.是否等比压缩
11.存放路径
12.信息输出

分享到:
评论

相关推荐

    ASP.NET 图片上传下载缩略察看C#和VB双版.rar

    ASP.NET 图片上传下载缩略察看C#和VB双版.rar 从本地向SQL Server上传存入图片 从SQL Server下载并在网页中显示图片 同时能显示缩略图和大图 含VB.NET和C#两个版本 内含数据库文件,简单附加到SQL Server中即可 ...

    asp.net图片上传

    在ASP.NET中,图片上传是一项常见的功能,尤其在构建交互性强...总结来说,ASP.NET图片上传涉及前端表单设计、服务器端文件处理、数据存储策略以及安全措施。理解并熟练掌握这些知识点对于开发健壮的Web应用至关重要。

    asp.net实现上传图片后并显示

    在ASP.NET中实现上传图片并在页面上显示是一个常见的...综上所述,ASP.NET提供了一套完整的框架来实现图片上传、显示和信息获取的功能。通过合理的编程实践,我们可以创建一个安全、高效且用户体验良好的图片上传系统。

    ASP.NET 图片预览

    综上所述,ASP.NET图片预览功能的实现涉及客户端与服务器端的交互,需要掌握HTML5的File API、ASP.NET的文件上传机制以及跨浏览器的兼容性处理。通过合理的设计和实现,我们可以为用户提供一个高效且兼容性良好的...

    asp.net上传图片带进度条

    在ASP.NET中实现图片上传并显示进度条的功能是一项常见的需求,尤其在用户上传大体积图片时,进度条能提供良好的用户体验。以下将详细介绍如何在ASP.NET中构建这样的功能。 首先,我们需要理解上传过程的基本原理。...

    asp.net 图片上传类

    同时生成 原图,缩略图,水印 具备生成缩略图,水印图的开关 代码清晰易懂

    ASP.NET 上传图片到指定的图片服务器

    ASP.NET 是一种强大的 ...总之,通过 ASP.NET 的 ASHX 处理程序和 `WebClient` 类,我们可以实现从应用服务器到图片服务器的异步图片上传功能。这种设计模式有助于优化系统性能,提高用户体验,同时也便于扩展和维护。

    asp.net图片上传控件

    ASP.NET 图片上传控件是Web开发中常用的一种组件...以上就是关于ASP.NET图片上传控件的一些核心知识点,希望对你理解并实现图片上传功能有所帮助。在实际开发中,需要根据项目需求和安全性考虑,选择最适合的实现方式。

    KindEditor3.5.1 asp.net 图片上传例子

    其中图片上传就是一个 所以就自己写了个Demo研究,现在总算没问题了 这个Demo希望对大家有帮助 另外需注意的是 上传文件夹(Upload)一定要在根目录 不然会报错: -- 行: 1103 ...

    asp.net图片上传自动裁剪,加文字、图片水印

    总结来说,ASP.NET图片上传、自动裁剪和添加水印的功能,涉及文件上传、图像处理和图形绘制等技术。通过合理利用System.Drawing库或第三方库,可以轻松实现这些功能,为Web应用提供强大的图片处理能力。

    asp.net图片管理系统

    ASP.NET图片管理系统是一种基于微软的ASP.NET框架开发的用于存储、管理和展示图片的应用程序。它为企业或个人提供了一个高效、安全且用户友好的平台来上传、检索、编辑和分享图片。下面将详细介绍ASP.NET图片管理...

    asp.net 批量上传图片demo

    3. **图片预览**:在图片上传之前,系统先显示图片预览,让用户确认图片是否符合需求。这通常通过读取上传文件的二进制数据,转换为Base64编码,然后在前端使用HTML和CSS展示。在ASP.NET中,可以使用FileUpload控件...

    JS+asp.net+图片上传+预览+支持多上传+上传前预览

    在本文中,我们将深入探讨如何使用JavaScript(JS)与ASP.NET技术实现图片上传、预览以及支持多文件上传和上传前预览的功能。这个技术组合是现代Web应用中常见的需求,尤其是在用户交互丰富的网站和应用中。 首先,...

    ASP.NET批量上传图片

    在ASP.NET中,批量上传图片是一项常见的功能,尤其在构建涉及用户交互的Web应用程序时,如社交媒体、电子商务网站或内容管理系统。...通过合理的编程实践和安全策略,可以实现高效、安全的批量图片上传功能。

    javascript asp.net 图片剪切上传 图片裁剪 上传保存

    在图片上传过程中,ASP.NET接收JavaScript发送的裁剪后图片数据,通常通过Ajax异步请求完成,这样可以在不刷新页面的情况下完成上传。服务器端可以使用ASP.NET的HTTP模块或控制器来接收和处理这些请求。收到图片数据...

    asp.net图片批量上传

    总结来说,实现ASP.NET图片批量上传涉及前端的文件选择和异步发送,后端的文件接收、验证和保存,以及可能的数据库交互和安全性控制。通过合理的设计和编程,可以创建高效且安全的图片批量上传功能。在实际开发中,...

    ASP.net图片上传、文件上传、带进度条

    1. 图片上传:在ASP.NET中,图片上传通常涉及HTML表单中的`&lt;input type="file"&gt;`元素,用户可以通过这个元素选择本地的图片文件。服务器端则通过HttpPostedFileBase对象来处理上传的文件。在C#中,你可以使用`...

    asp.net mvc 上传图片到数据库

    在ASP.NET MVC框架中,将图片上传到数据库是常见的需求,尤其在构建具有用户交互功能的网站时。本文将深入探讨如何使用C#语言来实现这个功能。 首先,我们需要了解ASP.NET MVC的基本概念。ASP.NET MVC(Model-View-...

    asp.net 图片批量上传控件

    ASP.NET 图片批量上传控件是一种...综上所述,ASP.NET图片批量上传控件涉及到的技术和知识点广泛,包括前端交互、后端处理、数据库设计、安全控制等多个方面。开发者需要结合具体需求和场景,合理设计并实现这个功能。

    asp.net图片上传加水印

    ASP.NET是一种基于.NET Framework的服务器端编程环境,用于构建...通过分析和理解这些代码,你可以更深入地学习如何在ASP.NET中实现图片上传和水印功能。同时,也可以将这些代码作为起点,根据项目需求进行定制和扩展。

Global site tag (gtag.js) - Google Analytics