zoukankan      html  css  js  c++  java
  • C# Upload

    using System;
    using System.Drawing;
    using System.Drawing.Imaging;
    using System.IO;
    using System.Web;
    using Bo_myCommon;
    
    public class Upload
    {
        #region 上传图片
    
        /// <summary>
        /// 上传图片
        /// </summary>
        /// <param name="imgBuffer">字节数组</param>
        /// <param name="uploadpath">保存路径。绝对或虚拟路径</param>
        /// <param name="imgformat">图片保存格式</param>
        /// <returns>上传成功后返回的新的文件名</returns>
        public static string UploadImage(byte[] imgBuffer, string uploadpath, ImageFormat imgformat)
        {
            try
            {
                System.IO.MemoryStream m = new MemoryStream(imgBuffer);
    
                if (!Directory.Exists(HttpContext.Current.Server.MapPath(uploadpath)))
                    Directory.CreateDirectory(HttpContext.Current.Server.MapPath(uploadpath));
    
                string imgname = StringHelper.CreateIDCode() + "." + imgformat.ToString().ToLower();
    
                string _path = HttpContext.Current.Server.MapPath(uploadpath) + imgname;
    
                Image img = System.Drawing.Image.FromStream(m);
                img.Save(_path, imgformat);
                m.Close();
    
                return uploadpath + imgname;
            }
            catch (Exception ex)
            {
                return ex.Message;
            }
        }
    
        /// <summary>
        /// 上传图片
        /// </summary>
        /// <param name="stream">Stream</param>
        /// <param name="uploadpath">保存路径。绝对或虚拟路径</param>
        /// <param name="imgformat">图片保存格式</param>
        /// <returns>上传成功后返回的新的文件名</returns>
        public static string UploadImage(Stream stream, string uploadpath, ImageFormat imgformat)
        {
            try
            {
                Image img = Image.FromStream(stream);
                string filename = StringHelper.CreateIDCode() + "." + imgformat.ToString().ToLower();
                filename = HttpContext.Current.Server.MapPath(uploadpath) + filename;
                img.Save(filename, imgformat);
                return filename;
            }
            catch (Exception ex)
            {
                return ex.Message;
            }
        }
    
        /// <summary>
        /// 上传图片
        /// </summary>
        /// <param name="postfile">客户端上传的文件</param>
        /// <param name="uploadpath">保存地址</param>
        /// <param name="imgformat">图片格式</param>
        /// <returns></returns>
        public static string UploadImage(HttpPostedFile postfile, string uploadpath, ImageFormat imgformat)
        {
            switch (imgformat.ToString().ToLower())
            {
                case "jpeg":
                    return UploadImageForJPEG(postfile, uploadpath);
                case "bmp":
                    return UploadImageForBMP(postfile, uploadpath);
                case "png":
                    return UploadImageForPNG(postfile, uploadpath);
                case "gif":
                    return UploadImageForGIF(postfile, uploadpath);
                default:
                    return UploadImageForJPEG(postfile, uploadpath);
            }
        }
    
        /// <summary>
        /// 上传图片,保存为JPEG格式
        /// </summary>
        /// <param name="postfile">HttpPostedFile</param>
        /// <param name="uploadpath">保存文件地址</param>
        /// <returns>返回上传后的路径</returns>
        public static string UploadImage(HttpPostedFile postfile, string uploadpath, bool autoImageName)
        {
            if (autoImageName)
            {
                switch (Path.GetExtension(postfile.FileName).ToLower())
                {
                    case ".jpg":
                        return UploadImageForJPEG(postfile, uploadpath);
                    case ".gif":
                        return UploadImageForGIF(postfile, uploadpath);
                    case ".png":
                        return UploadImageForPNG(postfile, uploadpath);
                    default:
                        return UploadImageForJPEG(postfile, uploadpath);
                }
            }
            else
            {
                Image img = Image.FromStream(postfile.InputStream);
                ImageHelper.ZoomAuto(postfile, uploadpath, img.Width, img.Height, "", "", null);
                return uploadpath;
            }
        }
    
        /// <summary>
        /// 自动生成新的图片名称
        /// </summary>
        /// <param name="postfile"></param>
        /// <param name="uploadpath"></param>
        /// <returns></returns>
        public static string UploadImage(HttpPostedFile postfile, string uploadpath)
        {
            return UploadImage(postfile, uploadpath, true);
        }
    
        #region 水印
    
        #region 上传图片,不缩放,并添加文字水印
    
        /// <summary>
        /// 上传图片,不缩放,并添加文字水印
        /// </summary>
        /// <param name="postedfile">HTTPPOSTEDFILE</param>
        /// <param name="uploadpath">保存的全路径,包括文件名</param>
        /// <param name="text">水印文字</param>
        /// <param name="waterTextFont">文字水印字体</param>
        public static void UploadImageWithWaterText(HttpPostedFile postedfile, string uploadpath, string text, Font waterTextFont)
        {
            Image img = Image.FromStream(postedfile.InputStream);
            ImageHelper.ZoomAuto(postedfile, uploadpath, img.Width, img.Height, text, "", waterTextFont);
        }
    
        /// <summary>
        /// 上传图片,不缩放,并添加文字水印
        /// </summary>
        /// <param name="postedfile">HTTPPOSTEDFILE</param>
        /// <param name="uploadpath">保存的全路径,包括文件名</param>
        /// <param name="text">水印文字</param>
        public static void UploadImageWithWaterText(HttpPostedFile postedfile, string uploadpath, string text)
        {
            Image img = Image.FromStream(postedfile.InputStream);
            ImageHelper.ZoomAuto(postedfile, uploadpath, img.Width, img.Height, text, "", null);
        }
    
        #endregion 上传图片,不缩放,并添加文字水印
    
        #region 上传图片,不缩放,并添加图片水印
    
        /// <summary>
        /// 上传图片,不缩放,并添加图片水印
        /// </summary>
        /// <param name="postedfile">源图</param>
        /// <param name="uploadpath">保存的路径,包含上传后的文件名</param>
        /// <param name="waterimg">水印图片的虚拟路径</param>
        public static void UploadImageWithWaterImage(HttpPostedFile postedfile, string uploadpath, string waterimg)
        {
            Image img = Image.FromStream(postedfile.InputStream);
            waterimg = HttpContext.Current.Server.MapPath(waterimg);
            ImageHelper.ZoomAuto(postedfile, uploadpath, img.Width, img.Height, "", waterimg, null);
        }
    
        #endregion 上传图片,不缩放,并添加图片水印
    
        /// <summary>
        /// 图片等比缩放
        /// </summary>
        /// <param name="postfile">源图</param>
        /// <param name="uploadpath">保存路径及文件名</param>
        /// <param name="width">宽度</param>
        /// <param name="height">高度</param>
        public static void CutImageAutoZoom(HttpPostedFile postfile, string uploadpath, int width, int height)
        {
            ImageHelper.ZoomAuto(postfile, uploadpath, width, height, "", "", null);
        }
    
        #endregion 水印
    
        private static byte[] GetPostFileByte(HttpPostedFile postfile)
        {
            int filelength = postfile.ContentLength;
            byte[] buffer = new byte[filelength];
            postfile.InputStream.Read(buffer, 0, filelength);
            return buffer;
        }
    
        private static string UploadImageForBMP(HttpPostedFile postfile, string uploadpath)
        {
            byte[] buffer = GetPostFileByte(postfile);
            return UploadImage(buffer, uploadpath, ImageFormat.Bmp);
        }
    
        private static string UploadImageForGIF(HttpPostedFile postfile, string uploadpath)
        {
            byte[] buffer = GetPostFileByte(postfile);
            return UploadImage(buffer, uploadpath, ImageFormat.Gif);
        }
    
        private static string UploadImageForJPEG(HttpPostedFile postfile, string uploadpath)
        {
            byte[] buffer = GetPostFileByte(postfile);
            return UploadImage(buffer, uploadpath, ImageFormat.Jpeg);
        }
    
        private static string UploadImageForPNG(HttpPostedFile postfile, string uploadpath)
        {
            byte[] buffer = GetPostFileByte(postfile);
            return UploadImage(buffer, uploadpath, ImageFormat.Png);
        }
    
        #endregion 上传图片
    
        #region 上传任何文件
    
        /// <summary>
        /// 上传文件
        /// </summary>
        /// <param name="postfile">上传的原始文件</param>
        /// <param name="uploadpath">保存地址,如:'/upload/images/aaaa.jpg'</param>
        /// <returns>返回上传后的文件名</returns>
        public static string UploadFile(HttpPostedFile postfile, string uploadpath)
        {
            try
            {
                string savepath = HttpContext.Current.Server.MapPath(uploadpath);
                if (!Directory.Exists(uploadpath))
                    Directory.CreateDirectory(uploadpath);
    
                string ext = Path.GetExtension(postfile.FileName);
                string filename = StringHelper.CreateIDCode() + ext;
                if (uploadpath.IndexOf(ext) == -1) //判断
                {
                    savepath = savepath + filename;
                }
                postfile.SaveAs(savepath);
                return uploadpath + filename;
            }
            catch (Exception ex)
            {
                return ex.Message;
            }
        }
    
        #endregion 上传任何文件
    }
  • 相关阅读:
    Heartbeat实现热备
    rsync实现数据增量备份
    MySql重置密码
    media viewport
    Java操作Excel之JXL (填充EXCEL模板)转载
    字节流与字符流的区别详解
    GIT和SVN的区别
    oracle与DB2递归查询
    SQL中使用WITH AS提高性能 简化嵌套SQL(转载)
    CVS tag and branch(转)
  • 原文地址:https://www.cnblogs.com/ilookbo/p/4988453.html
Copyright © 2011-2022 走看看