ASP.NET2.0的FIleUpload

来源:互联网 发布:域名过期多久可以续费 编辑:程序博客网 时间:2024/04/29 05:52

FileUpload控件负责向服务器上传文件

上传的方法:

例如,上传到服务器虚拟目录的IMG文件夹下

FileUpload1.SaveAs(Server.MapPath("img/") + FileUpload1.FileName);

FileUpload1.HasFile属性判断是否有文件

不过为了预防文件重名一般都会随机产生文件名,比如GUID

PostedFile.InputStream()方法可以以Stream的方式上传

判断格式

string fileEx = System.IO.Path.GetExtension(FileUpload1.FileName).ToLower();

if (fileEx != "gif")

Response.Write("javascript:Alert('上传文件格式不对')");

 

生成缩略图(以下的方法改自http://blog.csdn.net/doitok/archive/2007/08/16/1746951.aspx)

 

 

    /// <summary>

    /// 生成缩略图

    /// </summary>

    /// <param name="originalImagePath">源图路径(物理路径)</param>

    /// <param name="thumbnailPath">缩略图路径(物理路径)</param>

    /// <param name="width">缩略图宽度</param>

    /// <param name="height">缩略图高度</param>

    /// <param name="mode">生成缩略图的方式

    ///  "HW"://指定高宽缩放

    ///  "W"://指定宽,高按比例

    ///  "H"://指定高,宽按比例

    ///  "Cut"://指定高宽裁减(不变形)

    /// </param>   

    public static void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, string mode)

    {

        System.Drawing.Image originalImage = System.Drawing.Image.FromFile(originalImagePath);

 

        int towidth = width;

        int toheight = height;

 

        int x = 0;

        int y = 0;

        int ow = originalImage.Width;

        int oh = originalImage.Height;

 

        switch (mode)

        {

            case "HW"://指定高宽缩放(可能变形)               

                break;

            case "W"://指定宽,高按比例                   

                toheight = originalImage.Height * width / originalImage.Width;

                break;

            case "H"://指定高,宽按比例

                towidth = originalImage.Width * height / originalImage.Height;

                break;

            case "Cut"://指定高宽裁减(不变形)               

                if ((double)originalImage.Width / (double)originalImage.Height > (double)towidth / (double)toheight)

                {

                    oh = originalImage.Height;

                    ow = originalImage.Height * towidth / toheight;

                    y = 0;

                    x = (originalImage.Width - ow) / 2;

                }

                else

                {

                    ow = originalImage.Width;

                    oh = originalImage.Width * height / towidth;

                    x = 0;

                    y = (originalImage.Height - oh) / 2;

                }

                break;

            default:

                break;

        }

 

        //新建一个bmp图片

        System.Drawing.Image bitmap = new System.Drawing.Bitmap(towidth, toheight);

 

        //新建一个画板

        System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap);

 

        //设置高质量插值法

        g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;

 

        //设置高质量,低速度呈现平滑程度

        g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;

 

        //清空画布并以透明背景色填充

        g.Clear(System.Drawing.Color.Transparent);

 

        //在指定位置并且按指定大小绘制原图片的指定部分

        g.DrawImage(originalImage, new System.Drawing.Rectangle(0, 0, towidth, toheight),

            new System.Drawing.Rectangle(x, y, ow, oh),

            System.Drawing.GraphicsUnit.Pixel);

 

        try

        {

            //jpg格式保存缩略图

            bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);

        }

        catch (System.Exception e)

        {

            throw e;

        }

        finally

        {

            originalImage.Dispose();

            bitmap.Dispose();

            g.Dispose();

        }

    }

生成文字水印(这个方法测试的时候image.Save(Path_sy)显示GDI错误,哪位高手看到知道为什么说明下)

    /// <summary>

    /// 在图片上增加文字水印

    /// </summary>

    /// <param name="Path">原服务器图片路径</param>

    /// <param name="Path_sy">生成后的文件</param>

    /// <param name="sText">要生成的水印文字</param>

    protected void AddShuiYinWord(string Path, string Path_sy,string sText)

    {

        string addText =sText;

        System.Drawing.Image image = System.Drawing.Image.FromFile(Path);

        System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(image);

        g.DrawImage(image, 0, 0, image.Width, image.Height);

        System.Drawing.Font f = new System.Drawing.Font("Verdana", 16);

        System.Drawing.Brush b = new System.Drawing.SolidBrush(System.Drawing.Color.Blue);

 

        g.DrawString(addText, f, b, 15, 15);

        g.Dispose();

 

        image.Save(Path_sy);

        image.Dispose();

}

 

生成图片水印

 

    /// <summary>

    /// 在图片上生成图片水印

    /// </summary>

    /// <param name="Path">原服务器图片路径</param>

    /// <param name="Path_syp">生成的带图片水印的图片路径</param>

    /// <param name="Path_sypf">水印图片路径</param>

    protected void AddShuiYinPic(string Path, string Path_syp, string Path_sypf)

    {

        System.Drawing.Image image = System.Drawing.Image.FromFile(Path);

        System.Drawing.Image copyImage = System.Drawing.Image.FromFile(Path_sypf);

        System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(image);

        g.DrawImage(copyImage, new System.Drawing.Rectangle(image.Width - copyImage.Width, image.Height - copyImage.Height, copyImage.Width, copyImage.Height), 0, 0, copyImage.Width, copyImage.Height, System.Drawing.GraphicsUnit.Pixel);

        g.Dispose();                       

 

        image.Save(Path_syp);

        image.Dispose();

    }