一般处理程序处理图片上传下载

时间:2023-02-20 19:31:29

2012年4月26日   天气晴   今天和同学开玩笑  我说  像我们这种搞技术的   照理说应该是很胖的   可我怎么这么瘦(别人说像排骨),小童同学回答道:“你是个伪技术员”。  呵呵  fuck  我要去搞运动去了。

正在学习asp.net基础,一般处理程序处理上传下载:

上传:

html文件

<form action="" method="post" enctype="multipart/form-data"><!--enctype="multipart/form-data"表示有文件要传-->
<input type="file" name="uploadfile" /><input type="submit" value="上传" /><input type="hidden" name="ispostback" value="1" />
</form>

ashx文件

    public void ProcessRequest (HttpContext context) {
        if (string.IsNullOrEmpty(context.Request.Form["ispostback"]))//判断是否是第一次加载  我是在html页面上加了一个隐藏字段 来实现的
        {
            string strHTML = System.IO.File.ReadAllText(context.Server.MapPath("~/uploadimage.htm"));//这里我是用一个模板  上面的html是在这个模板里的在这里每次请求这个ashx  自动产生html  这里有点像模拟aspx文件
            context.Response.Write(strHTML);//如果是第一次加载   写入html文件
        }
        else  //如果 不是第一次加载   说明是上传   
        {
            if (context.Request.Files.Count > 0)//判断是否有文件上传过来
            {
                HttpPostedFile ht=context.Request.Files["uploadfile"];//取出文件
                string filename= ht.FileName;//取出 文件名
                filename=DateTime.Now.ToString("MM-dd-hh-mm-ss")+filename;//文件名加时间  访问重名
                ht.SaveAs(context.Server.MapPath("~/")+filename);//保存文件
                //context.Response.Write("上传成功"+filename);
                returnHtml(context);
            }
            else
            {
                context.Response.Write("你没有选择文件");
            }
        }
        
    }


一般处理程序处理图片:

    public void ProcessRequest (HttpContext context) {
        context.Response.ContentType = "image/jpeg";
        /*using (Image img = Bitmap.FromFile(context.Server.MapPath("~/") + "04-26-09-39-25psu.jpg"))
        {
            using (Graphics gp = Graphics.FromImage(img))
            {
                gp.DrawString("图片测试", new Font("微软雅黑", 16), Brushes.LightBlue, new PointF(img.Width - 80, img.Height - 30));
                img.Save(context.Response.OutputStream, img.RawFormat);//img.RawFormat是获取一张图片的格式                
            }
        }//从原有图片 生成   并发送文件流
        */
        /*using (Image img = Bitmap.FromFile(context.Server.MapPath("~/") + "04-26-09-39-25psu.jpg"))
        {
            using (Bitmap bt = new Bitmap(img, 100, 100))
            {
                bt.Save(context.Response.OutputStream, img.RawFormat);
            }
        }//把一张图片  缩成  100,100大小的图片
         */
        /*using (Bitmap bt = new Bitmap( 100, 100))
        {
            using (Graphics gp = Graphics.FromImage(bt))
            {
                gp.FillRectangle(Brushes.White, new Rectangle(0,0,100,100));
                gp.DrawString("真他妈的黑!",new Font("微软雅黑",16),Brushes.Red,new PointF(2,2));
                bt.Save(context.Response.OutputStream,System.Drawing.Imaging.ImageFormat.Jpeg);
            }//自己新建一张图片  然后输出出去
        }*/
        string files=context.Request.QueryString["waterimg"];//获取表单值
        if (!string.IsNullOrEmpty(files))//判断是否为空
        {            
            if(File.Exists(context.Server.MapPath("~/"+files)))//判断文件是否存在
            {
                using(Image img=Bitmap.FromFile(context.Server.MapPath("~/"+files)))//建立图片
                {
                    using (Graphics gp = Graphics.FromImage(img))//创建画布
                    {
                        gp.DrawImage(Bitmap.FromFile(context.Server.MapPath("~/" + "baidulogo.gif")), new Point(0, 0));//添加水印  baidulogo.gif是水印图片
                        img.Save(context.Response.OutputStream, img.RawFormat);
                    }
                }
            }
        }//调用方式  <img src="makeimg.ashx?waterimg=04-26-09-39-25psu.jpg" />
    }