.NET MVC 图片上传

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yeqi3000/article/details/45191081
public class ImageHelperController :Controller
    {
        //
        // GET: /Admin/ImageHelper/

        public JsonResult UploadImage(HttpPostedFileBase imgFile)
        {
            object result = ETAGTech.Fmk.PMN.SubDispatch.BSIsTimeOut();
            if (result == null)
            {
                try
                {
                    if (imgFile != null)
                    { //新上传了图片,需要保存处理
                        string fImageName = string.Empty;
                        object fResult = ImageHelperController.SaveImage(imgFile, ref fImageName, false);
                        if (fResult == null)
                        {//上传成功
                            return Json(new { error = 0, url = "/Upload/Images/" + fImageName }, "text/html");
                        }
                        else
                        {//上传失败
                            return Json(new { error = 1, message = "上传失败!" }, "text/html");
                        }
                    }
                }
                catch (Exception ex)
                {
                    result = new { error = 1, message = ex.ToString() };
                }
            }
            else
            {
                result = new { error = 1, message = "没有文件!" };
            }
            return Json(result, "text/html");
        }

        /// <summary>
        /// .NET MVC模式下的图片上传
        /// </summary>
        /// <param name="aImage">要上传的图片</param>
        /// <param name="ImageName">上传成功后的路径</param>
        /// <param name="SaveThumb">是否保存</param>
        /// <returns>返回null表示上传成功</returns>
        public static object SaveImage(HttpPostedFileBase aImage, ref string ImageName, bool SaveThumb)
        {
            object result = new object();
            string ExtName = Path.GetExtension(aImage.FileName).ToLower();
            if (ExtName == ".jpg" || ExtName == ".jpeg" || ExtName == ".png" || ExtName == ".gif")
            {
                int fMaxImageSize = Convert.ToInt32(ConfigurationManager.AppSettings["MaxImageSize"]);//单位 kb
                if (aImage.ContentLength > fMaxImageSize * 1024)
                {
                    result = new { Result = false, Msg = "图片超过限定大小!" };
                }
                else
                {
                    //ImageName = Guid.NewGuid().ToString() + ExtName;//图片名称
                    ImageName = DateTime.Now.ToString("yyyyMMddHHmmssffff") + ExtName;//图片名称
                    string UploadFolder = AppDomain.CurrentDomain.BaseDirectory + "Upload/Images/";
                    if (!Directory.Exists(UploadFolder))
                    {
                        Directory.CreateDirectory(UploadFolder);//若不存图片文件夹则创建
                    }
                    Image fSaveImage = Image.FromStream(aImage.InputStream);
                    fSaveImage.Save(UploadFolder + ImageName);
                    if (SaveThumb == true)
                    {
                        string ThumbUploadFolder = AppDomain.CurrentDomain.BaseDirectory + "Upload/Images/Thumb/";
                        int ThumbImageLength = int.Parse(ConfigurationManager.AppSettings["ThumbImageLength"]);
                        if (fSaveImage.Height > ThumbImageLength || fSaveImage.Width > ThumbImageLength)
                        {//原图高宽至少一项大于设定值
                            Image fThumb;
                            if (fSaveImage.Height > fSaveImage.Width)
                            {//高大于宽,以高为主
                                double p = (double)fSaveImage.Height / (double)ThumbImageLength;
                                fThumb = fSaveImage.GetThumbnailImage((int)(fSaveImage.Width / p),
                                    ThumbImageLength,
                                    new Image.GetThumbnailImageAbort(ThumbnailCallback),
                                    IntPtr.Zero);

                            }
                            else
                            { //宽大于高,以宽为主
                                double p = (double)fSaveImage.Width / (double)ThumbImageLength;
                                fThumb = fSaveImage.GetThumbnailImage(ThumbImageLength,
                                    (int)(fSaveImage.Height / p),
                                    new Image.GetThumbnailImageAbort(ThumbnailCallback),
                                    IntPtr.Zero);
                            }
                            fThumb.Save(ThumbUploadFolder + ImageName);
                        }
                        else
                        {
                            fSaveImage.Save(ThumbUploadFolder + ImageName);
                        }
                    }
                    fSaveImage.Dispose();
                    return null;
                }
            }
            else
            {
                result = new { Result = false, Msg = "图片格式不正确,只允许上传jpg,png,gif!" };
            }
            return result;
        }

        public static bool ThumbnailCallback()
        {
            return false;
        }

        /// <summary>
        /// 删除图片
        /// </summary>
        /// <param name="aImageName">要删除的图片名称</param>
        public static void DeleteImage(string aImageName)
        {
            //删除旧图片
            if (!string.IsNullOrEmpty(aImageName))
            { //原图片不是默认图片,需要清理
                string fImagePath = AppDomain.CurrentDomain.BaseDirectory + "Upload/Images/" + aImageName;
                string fImageThumbPath = AppDomain.CurrentDomain.BaseDirectory + "Upload/Images/Thumb/" + aImageName;
                if (System.IO.File.Exists(fImagePath))
                {
                    System.IO.File.Delete(fImagePath);
                }
                if (System.IO.File.Exists(fImageThumbPath))
                {
                    System.IO.File.Delete(fImageThumbPath);
                }
            }
        }

web.config

  <appSettings>
    <!-- 最大上传图片大小 单位:KB-->
    <add key="MaxImageSize" value="1024" />
    <!-- 缩略图边长-->
    <add key="ThumbImageLength" value="120" />
  </appSettings>

猜你喜欢

转载自blog.csdn.net/yeqi3000/article/details/45191081