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 上传任何文件 }
原文:http://www.cnblogs.com/ilookbo/p/4988453.html