asp.net图片上传文件按日期命名+真正意义上类型判断+缩略图 -

来源:互联网 发布:原宿很潮的淘宝店 编辑:程序博客网 时间:2024/05/03 08:49

ImageThumbnail.cs(生成缩略图文件)

复制代码

using System;
using System.IO;
using System.Drawing;
using System.Drawing.Imaging;

public class ImageThumbnail
{
    public Image ResourceImage;
    private int ImageWidth;
    private int ImageHeight;
    public string ErrorMessage;

    public ImageThumbnail(string ImageFileName)
    {
        ResourceImage = Image.FromFile(ImageFileName);
        ErrorMessage = "";
    }

    public bool ThumbnailCallback()
    {
        return false;
    }


    //
方法1,按大小
    public bool ReducedImage(int Width, int Height, string targetFilePath)
    {
        try
        {
            Image ReducedImage;
            Image.GetThumbnailImageAbort callb = new Image.GetThumbnailImageAbort(ThumbnailCallback);
            ReducedImage = ResourceImage.GetThumbnailImage(Width, Height, callb, IntPtr.Zero);
            ReducedImage.Save(@targetFilePath, ImageFormat.Jpeg);
            ReducedImage.Dispose();
            return true;
        }
        catch (Exception e)
        {
            ErrorMessage = e.Message;
            return false;
        }
    }


    //
方法2,按百分比  缩小60% Percent0.6 targetFilePath为目标路径
    public bool ReducedImage(double Percent, string targetFilePath)
    {
        try
        {
            Image ReducedImage;
            Image.GetThumbnailImageAbort callb = new Image.GetThumbnailImageAbort(ThumbnailCallback);
            ImageWidth = Convert.ToInt32(ResourceImage.Width * Percent);
            ImageHeight = (ResourceImage.Height) * ImageWidth / ResourceImage.Width;//
等比例缩放
            ReducedImage = ResourceImage.GetThumbnailImage(ImageWidth, ImageHeight, callb, IntPtr.Zero);
            ReducedImage.Save(@targetFilePath, ImageFormat.Jpeg);
            ReducedImage.Dispose();
            return true;
        }
        catch (Exception e)
        {
            ErrorMessage = e.Message;
            return false;
        }
    }


}

 

前台文件:

就一个 FileUpload1和一个Button,就不用贴代码了吧!

后台文件:

复制代码

using System;
using System.Data;
using System.Configuration;
using System.Collections;
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;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void btn_Upload_Click(object sender, EventArgs e)
    {
       
        try
        {
            //
判断是否已经选取文件
            if (FileUpload1.HasFile)
            {
                if (IsAllowedExtension(FileUpload1))
                {
                   
                    //
取得文件的扩展名,并转换成小写
                    string fileExtension = System.IO.Path.GetExtension(FileUpload1.FileName).ToLower();

                    string path1 = Server.MapPath("~/Bigimages/");
                    string path2 = Server.MapPath("~/Smallimages/");
                    string fileName = DateRndName() + fileExtension;
                    FileUpload1.PostedFile.SaveAs(path1 + fileName);

                    //生成缩略图并存进文件夹
                    ImageThumbnail img = new ImageThumbnail(FileUpload1.PostedFile.FileName);

                    img.ReducedImage(200,200,path2 + fileName);//200,200表是长和宽都为200
                    //img.ReducedImage(0.4, path2 + fileName);//0.4
表示缩小40%

                    Response.Write("<script>alert(/"上传成功/");</script>");
                }
                else
                {
                    Response.Write("<script>alert(/"
您只能上传jpg或者gif图片/");</script>");
                }

            }
            else
            {
                Response.Write("<script>alert(/"
你还没有选择文件/");</script>");
            }
        }
        catch (Exception error)
        {
            Response.Write(error.ToString());
        }
    }
    //
真正判断文件类型的关键函数
    public static bool IsAllowedExtension(FileUpload hifile)
    {
        System.IO.FileStream fs = new System.IO.FileStream(hifile.PostedFile.FileName, System.IO.FileMode.Open, System.IO.FileAccess.Read);
        System.IO.BinaryReader r = new System.IO.BinaryReader(fs);
        string fileclass = "";
        byte buffer;
        try
        {
            buffer = r.ReadByte();
            fileclass = buffer.ToString();
            buffer = r.ReadByte();
            fileclass += buffer.ToString();

        }
        catch
        {

        }
        r.Close();
        fs.Close();
        if (fileclass == "255216" || fileclass == "7173")//
说明255216jpg;7173gif;6677BMP,13780PNG;7790exe,8297rar
        {
            return true;
        }
        else
        {
            return false;
        }

    }

    #region DateRndName()日期时间+3位数随机
    string DateRndName()
    {
        Random ra = new Random();
        DateTime d = DateTime.Now;
        string s = null, y, m, dd, h, mm, ss;
        y = d.Year.ToString();
        m = d.Month.ToString();
        if (m.Length < 2) m = "0" + m;
        dd = d.Day.ToString();
        if (dd.Length < 2) dd = "0" + dd;
        h = d.Hour.ToString();
        if (h.Length < 2) h = "0" + h;
        mm = d.Minute.ToString();
        if (mm.Length < 2) mm = "0" + mm;
        ss = d.Second.ToString();
        if (ss.Length < 2) ss = "0" + ss;
        s += y + m + dd + h + mm + ss;
        s += ra.Next(100, 999).ToString();
        return s;
    }
    #endregion

 

}

 

原创粉丝点击