ashx 图片上传

Posted taikongbai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ashx 图片上传相关的知识,希望对你有一定的参考价值。

为了方便多出调用图片上传方法       首先我们将图片上传方法抽离出来 

创建ashx 一个新的方法

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using System.Web;

namespace FileImg
{
    /// <summary>
    /// ImgUpLoad 的摘要说明
    /// </summary>
    public class ImgUpLoad : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            context.Response.Write("Hello World");
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
        /// <summary>
        /// 图片上传 并保存至服务器  返回 保存图片的相对路径URL
        /// </summary>
        /// <param name="context"></param>
        /// <param name="file"></param>
        /// <returns></returns>
        public string ImgUp(HttpContext context)
        {
            //上传的第一个文件
            HttpPostedFile file = context.Request.Files[0];
            //获取图片的名称
            string ImgName = file.FileName;
            //获取图片的扩展名
            string ImgExtention = System.IO.Path.GetExtension(ImgName);
            //将图片流文件保存在 字节序列容器 中
            Stream stream = file.InputStream;
            //将图片流文件转换为Image图片对象
            Image img = Image.FromStream(stream);

            //将图片保存在服务器上

            //为了防止图片名称重复 我们使用随机数命名
            Random ran = new Random((int)DateTime.Now.Ticks);
            //图片保存的目录  按照日期进行保存
            string subPath = "/imgUploads/" + DateTime.Now.ToString("yyyyMMdd") + "/"; // 20190928
            //图片保存的目录的绝对路径
            string path = context.Server.MapPath(subPath);
            //当文件夹路径不存在时 创建文件夹
            if (false == System.IO.Directory.Exists(path))
            {
                //创建pic文件夹
                System.IO.Directory.CreateDirectory(path);
            }
            string imgName = ran.Next(99999) + ImgExtention;
            string serverPath = path + imgName;//文件保存位置及命名
            string imgPath = subPath + imgName;
            try
            {
                img.Save(serverPath);
                return imgPath;
            }
            catch
            {
                return "";
            }
        }

    }
}

 

在你所要用到的方法里面进行调用上面的图片上传方法   这里可以接收到图片上传方法返回的  已经上传的图片的相对路径

   
            ImgUpLoad load = new ImgUpLoad();
            string imgUrl = load.ImgUp(context);

 

以上是关于ashx 图片上传的主要内容,如果未能解决你的问题,请参考以下文章

ajax图片上传(asp.net +jquery+ashx)

Ueditor无法上传图片异常

文件的上传(ashx+form)

绕过黑名单上传

JS文件上传代码

如何将 id 参数传递给 .ashx 文件上传