示例一:

  1. public JsonResult Upload(string parameter)
  2. {
  3. var file = Request.Files[];
  4. try
  5. {
  6. //LogHelper.Info("文件长度:" + file.ContentLength.ToString() + "||最大照片:" + 1024 * 1024 * (Config.UploadFileSizeLimitInMB) + "||" + Config.UploadFileSizeLimitInMB);
  7. if (file == null || file.ContentLength == )
  8. {
  9. throw new ValidationException("无上传文件");
  10. }
  11. if (file.ContentLength > * * Convert.ToInt32(uploadFileSize))
  12. {
  13. throw new ValidationException("上传文件过大");
  14. }
  15. #region checkfile
  16. string fType = file.ContentType;//获取图像的类型
  17.  
  18. bool isimage = fType == "image/bmp" || fType == "image/gif" || fType == "image/pjpeg" || fType == "image/jpeg" || fType == "image/x-png" || fType == "image/png";
  19.  
  20. if (fType == "application/octet-stream")
  21. {
  22. BinaryReader reader = new BinaryReader(file.InputStream);
  23. string fileClass;
  24. byte buffer;
  25. buffer = reader.ReadByte();
  26. fileClass = buffer.ToString();
  27. buffer = reader.ReadByte();
  28. fileClass += buffer.ToString();
  29. //reader.Close();
  30. if (!(fileClass == "" || fileClass == "" || fileClass == "" || fileClass == ""))
  31. //255216是jpg;7173是gif;6677是BMP,13780是PNG;7790是exe,8297是rar
  32. {
  33. throw new ValidationException("请上传图片格式的文件");
  34. }
  35. else
  36. {
  37. isimage = true;
  38. }
  39.  
  40. file.InputStream.Position = ;
  41. }
  42.  
  43. string fext = Path.GetExtension(file.FileName).ToLower(); //获取文件后缀
  44.  
  45. bool fextIsImage = fext == ".bmp" || fext == ".gif" || fext == ".png" || fext == ".jpeg" || fext == ".jpe" || fext == ".jpg";
  46.  
  47. if (!(isimage && fextIsImage))
  48. {
  49. throw new ValidationException("请上传图片格式的文件");
  50. }
  51. #endregion
  52.  
  53. string uploadPath = string.Format("{0}\\{1}", uploadFilePath, SqlTimeHelper.GetTime().ToString("yyyyMMdd"));
  54. if (!Directory.Exists(uploadPath))
  55. {
  56. Directory.CreateDirectory(uploadPath);
  57. }
  58. var fileId = Guid.NewGuid();
  59.  
  60. System.Drawing.Image sImage = System.Drawing.Image.FromStream(file.InputStream);
  61. int tw = sImage.Width - ;
  62. int th = sImage.Height - ;
  63. WatermarkHelper.AddWartermark(sImage);
  64.  
  65. ImagesHelper.DrawImage(sImage, string.Format("{0}\\{1}{2}", uploadPath, fileId, fext), tw, );
  66.  
  67. ////原始图片的宽度和高度
  68. //System.Drawing.Bitmap objPic, objNewPic; //图像对象
  69. //objPic = new System.Drawing.Bitmap(sImage);
  70. //objNewPic = new System.Drawing.Bitmap(objPic, tw, th); //使用指定的大小初始化objNewPic
  71. //objNewPic.Save(string.Format("{0}\\{1}{2}", uploadPath, fileId, fext));
  72. //objPic.Dispose();
  73. //objNewPic.Dispose();
  74. sImage.Dispose(); //释放资源
  75.  
  76. var rtnJson = Resource.SaveFile(file.FileName, fileId, fext);
  77.  
  78. //下面这句代码缺少的话,上传成功后上传队列的显示不会自动消失
  79. return Json(new ApiSuccessResponse<FileUploadModel>(rtnJson));
  80. }
  81. catch (ValidationException ve)
  82. {
  83. return Json(new ApiInvalidParaExceptionResponse(ve.Message));
  84. }
  85. catch (Exception ue)
  86. {
  87. return Json(new ApiExceptionResponse<string>(ue));
  88. }
  89. }

示例二:

  1. public bool SaveStringToFile(string token, string fileName, string content)
  2. {
  3. try
  4. {
  5. string fext = Path.GetExtension(fileName).ToLower(); //获取文件后缀
  6. bool fextIsImage = fext == ".bmp" || fext == ".gif" || fext == ".png" || fext == ".jpeg" || fext == ".jpe" || fext == ".jpg";
  7.  
  8. byte[] filecontent = System.Convert.FromBase64String(content);
  9. string path = System.Configuration.ConfigurationSettings.AppSettings["UploadFilePath"];
  10. BinaryReader reader = new BinaryReader(new MemoryStream(filecontent));
  11. string fileClass;
  12. byte buffer;
  13. buffer = reader.ReadByte();
  14. fileClass = buffer.ToString();
  15. buffer = reader.ReadByte();
  16. fileClass += buffer.ToString();
  17. reader.Close();
  18. bool isimage = false;
  19. if (!(fileClass == "" || fileClass == "" || fileClass == "" || fileClass == ""))
  20. //255216是jpg;7173是gif;6677是BMP,13780是PNG;7790是exe,8297是rar
  21. {
  22. return false;
  23. }
  24. else
  25. {
  26. isimage = true;
  27. }
  28.  
  29. if (!(isimage && fextIsImage))
  30. {
  31. return false;
  32. }
  33. path = Path.Combine(path, fileName);
  34. FileInfo info = new FileInfo(path);
  35. if (!Directory.Exists(info.DirectoryName))
  36. Directory.CreateDirectory(info.DirectoryName);
  37. if (System.IO.File.Exists(path)) System.IO.File.Delete(path);
  38. System.IO.FileStream outfile = System.IO.File.OpenWrite(path);
  39. outfile.Write(filecontent, , filecontent.Length);
  40. outfile.Close();
  41. return true;
  42. }
  43. catch
  44. {
  45. return false;
  46. }
  47. }

C#上传图片(含有图片大小格式过滤以及改变像素安全存储)的更多相关文章

  1. C#.Net 上传图片,限制图片大小,检查类型完整版

    C#.Net 上传图片,限制图片大小,检查类型完整版 源代码: 处理图片类,如检查图片大小,按宽度比例缩小图片 public class CImageLibrary{   public enum Va ...

  2. jquery实现上传图片及图片大小验证、图片预览效果代码

    jquery实现上传图片及图片大小验证.图片预览效果代码 jquery实现上传图片及图片大小验证.图片预览效果代码 上传图片验证 */ function submit_upload_picture() ...

  3. 关于PHP HTML <input type="file" name="img"/>上传图片,图片大小,宽高,后缀名。

    在我们的系统中,不免要上传图片,视频等文件,在上传中,需要做的一些判断,文件大小等方面. 注意: 在php.ini 中的post_max_size,upload_max_filesize默认为2M,在 ...

  4. 在ASP.NET MVC下实现单个图片上传, 客户端服务端双重限制图片大小和格式, 服务端裁剪图片

    在"MVC文件图片ajax上传轻量级解决方案,使用客户端JSAjaxFileUploader插件01-单文件上传"一文中,使用JSAjaxFileUploader这款插件实现了单文 ...

  5. js 上传图片,用户自定义截取图片大小

    js 上传图片,用户自定义截取图片大小 js 组件

  6. php用jquery-ajax上传多张图片限制图片大小

    php用jquery-ajax上传多张图片限制图片大小 /** * 上传图片,默认大小限制为3M * @param String $fileInputName * @param number $siz ...

  7. SpringMVC 图片上传,检查图片大小

    使用SpringMVC+Spring 前端提交图片文件到Controller,检查上传图片大小是否符合要求 直接上代码了 1.校验图片大小 这里提供出验证的方法,用于在需要校验的地方调用 /** * ...

  8. 图片处理:html文本获取图片Url,判断图片大小,存数据库

    1.从html文本获取图片Url /** * html文本中取出url链接 */ public class Url { public static void main(String[] args) { ...

  9. markdown 插入图片太大?怎么设定图片大小?

    你一定在插入图片的时候,遇到图片太大,影响观感的问题. Markdown中,图片大小的设定方式有两种 第一种: ![](https://img2018.cnblogs.com/blog/1735896 ...

随机推荐

  1. 第一章:帝国的余晖 AT&T公司

    启示:自己的想法,有好的技术比什么都重要,一定要注意的是技术,不要贪小便宜,明白自己最先关心的的哪个事情. 书中内容:没有人能活两百岁,也没有公司能辉煌两百年,这就是规律,很难超越.

  2. 作业四 任务分解(WBS)

    近日忙于实验,未来得及完成任务分解昨晚召开了紧急会议,才确定了任务划分.主体分配如下:三名编程人员,一个主编两个辅编,一人做需求分析,一人做程序测试,一人专司文档. 具体细节如下:在剩余的三周左右的时 ...

  3. 2017-08-20 block,inline和inline-block概念和区别

    display:inline.block.inline-block的区别 display:block就是将元素显示为块级元素. block元素的特点是: 总是在新行上开始: 高度,行高以及顶和底边距都 ...

  4. python + opencv 环境配置

    1.python 2.7.10 2.numpy 1.8.1 3.opencv2.4.8 4.OpenCV目录 ...\opencv\build\python\2.7" 下 "cv2 ...

  5. Android 图表

    今天在群里有人提问Android的图表,在网上搜索了一下,在贴吧中看到的回答,说是Trinea整理的开源项目,不知道是不是博客上的Trinea. 将内容记录如下,以备需要时查看. GraphView ...

  6. 解决Delphi 2010启动时出现cannot create xxxx\EditorLineEnds.ttr问题

    由于在Windows安装了最近的更新(KB2982791, KB2970228)后,Delphi的IDE需要创建的一个文件%TEMP%\EditorLineEnds.ttr会被系统锁定,导致除非重新启 ...

  7. Java 多线程初级汇总

    多线程概述 抢占式多任务 直接中断而不需要事先和被中断程序协商 协作多任务 被中断程序同意交出控制权之后才能执行中断 多线程和多进程区别? 本质的区别在于每个进程有它自己的变量的完备集,线程则共享相同 ...

  8. 一本通1648【例 1】「NOIP2011」计算系数

    1648: [例 1]「NOIP2011」计算系数 时间限制: 1000 ms         内存限制: 524288 KB [题目描述] 给定一个多项式 (ax+by)k ,请求出多项式展开后 x ...

  9. 1643【例 3】Fibonacci 前 n 项和

    1643:[例 3]Fibonacci 前 n 项和 时间限制: 1000 ms         内存限制: 524288 KB sol:这题应该挺水的吧,就像个板子一样 1 0 01 1 0   * ...

  10. BZOJ2431 HAOI2009逆序对数列(动态规划)

    对于排列计数问题一般把数按一个特定的顺序加入排列.这个题做法比较显然,考虑将数从小到大加入排列即可. #include<iostream> #include<cstdio> # ...