572 lines
		
	
	
		
			23 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			572 lines
		
	
	
		
			23 KiB
		
	
	
	
		
			C#
		
	
	
	
| using System;
 | ||
| using System.IO;
 | ||
| using System.Linq;
 | ||
| using System.Web.UI.WebControls;
 | ||
| 
 | ||
| namespace BLL
 | ||
| {
 | ||
|     /// <summary>
 | ||
|     /// 上传附件相关
 | ||
|     /// </summary>
 | ||
|     public class UploadAttachmentService
 | ||
|     {
 | ||
|         #region 附件显示不带删除
 | ||
|         /// <summary>
 | ||
|         /// 附件显示
 | ||
|         /// </summary>
 | ||
|         public static string ShowAttachment(string rootPath, string path)
 | ||
|         {
 | ||
|             string htmlStr = string.Empty;
 | ||
|             if (!string.IsNullOrEmpty(path))
 | ||
|             {
 | ||
|                 htmlStr = "<table runat='server' cellpadding='5' cellspacing='5' style=\"width: 100%\">";
 | ||
|                 string[] arrStr = path.Split(new string[] { "," }, System.StringSplitOptions.RemoveEmptyEntries);
 | ||
|                 for (int i = 0; i < arrStr.Length; i++)
 | ||
|                 {
 | ||
|                     if (!string.IsNullOrEmpty(arrStr[i]))
 | ||
|                     {
 | ||
|                         string[] urlArray = arrStr[i].Split('\\');
 | ||
|                         string scanUrl = string.Empty;
 | ||
|                         for (int j = 0; j < urlArray.Length; j++)
 | ||
|                         {
 | ||
|                             scanUrl += urlArray[j] + "|";
 | ||
|                         }
 | ||
| 
 | ||
|                         string url = rootPath + arrStr[i].Replace('\\', '/');
 | ||
|                         string[] subUrl = url.Split('/');
 | ||
|                         string fileName = subUrl[subUrl.Count() - 1];
 | ||
|                         string newFileName = fileName.Substring(fileName.IndexOf("~") + 1);
 | ||
|                         htmlStr += "<tr><td style=\"width: 60%\" align=\"left\"><span style='cursor:pointer;cursor:pointer;cursor:pointer;TEXT-DECORATION: underline;color:blue' onclick=\"window.open('" + url + "')\">" + newFileName + "</span></td>";
 | ||
|                     }
 | ||
|                 }
 | ||
| 
 | ||
|                 htmlStr += "</table>";
 | ||
|             }
 | ||
| 
 | ||
|             return htmlStr;
 | ||
|         }
 | ||
|         #endregion
 | ||
| 
 | ||
|         #region 附件显示不带删除
 | ||
|         /// <summary>
 | ||
|         /// 附件显示
 | ||
|         /// </summary>
 | ||
|         public static string ShowAttachment2(string rootPath, string path)
 | ||
|         {
 | ||
|             string htmlStr = string.Empty;
 | ||
|             if (!string.IsNullOrEmpty(path))
 | ||
|             {
 | ||
|                 htmlStr = "<table runat='server' cellpadding='5' cellspacing='5' style=\"width: 100%\">";
 | ||
|                 string[] arrStr = path.Split(new string[] { "," }, System.StringSplitOptions.RemoveEmptyEntries);
 | ||
|                 for (int i = 0; i < arrStr.Length; i++)
 | ||
|                 {
 | ||
|                     if (!string.IsNullOrEmpty(arrStr[i]))
 | ||
|                     {
 | ||
|                         string[] urlArray = arrStr[i].Split('\\');
 | ||
|                         string scanUrl = string.Empty;
 | ||
|                         for (int j = 0; j < urlArray.Length; j++)
 | ||
|                         {
 | ||
|                             scanUrl += urlArray[j] + "|";
 | ||
|                         }
 | ||
| 
 | ||
|                         string url = rootPath + arrStr[i].Replace('\\', '/');
 | ||
|                         string[] subUrl = url.Split('/');
 | ||
|                         string fileName = subUrl[subUrl.Count() - 1];
 | ||
|                         string newFileName = fileName.Substring(fileName.IndexOf("_") + 1);
 | ||
|                         htmlStr += "<tr><td style=\"width: 60%\" align=\"left\"><span style='cursor:pointer;cursor:pointer;cursor:pointer;TEXT-DECORATION: underline;color:blue' onclick=\"window.open('" + url + "')\">" + newFileName + "</span></td>";
 | ||
|                     }
 | ||
|                 }
 | ||
| 
 | ||
|                 htmlStr += "</table>";
 | ||
|             }
 | ||
| 
 | ||
|             return htmlStr;
 | ||
|         }
 | ||
|         #endregion
 | ||
| 
 | ||
|         #region 附件显示带删除 页面单个附件
 | ||
|         /// <summary>
 | ||
|         /// 附件显示
 | ||
|         /// </summary>
 | ||
|         public static string ShowAndDeleteAttachment(string rootPath, string path)
 | ||
|         {
 | ||
|             string htmlStr = string.Empty;
 | ||
|             if (!string.IsNullOrEmpty(path))
 | ||
|             {
 | ||
|                 htmlStr = "<table runat='server' cellpadding='5' cellspacing='5' style=\"width: 100%\">";
 | ||
|                 string[] arrStr = path.Split(new string[] { "," }, System.StringSplitOptions.RemoveEmptyEntries);
 | ||
|                 for (int i = 0; i < arrStr.Length; i++)
 | ||
|                 {
 | ||
|                     if (!string.IsNullOrEmpty(arrStr[i]))
 | ||
|                     {
 | ||
|                         string[] urlArray = arrStr[i].Split('\\');
 | ||
|                         string scanUrl = string.Empty;
 | ||
|                         for (int j = 0; j < urlArray.Length; j++)
 | ||
|                         {
 | ||
|                             scanUrl += urlArray[j] + "|";
 | ||
|                         }
 | ||
|                         string url = rootPath + arrStr[i].Replace('\\', '/');
 | ||
|                         string[] subUrl = url.Split('/');
 | ||
|                         string fileName = subUrl[subUrl.Count() - 1];
 | ||
|                         string newFileName = fileName.Substring(fileName.IndexOf("~") + 1);
 | ||
| 
 | ||
|                         htmlStr += "<tr><td style=\"width: 60%\" align=\"left\"><span style='cursor:pointer;cursor:pointer;cursor:pointer;TEXT-DECORATION: underline;color:blue' onclick=\"window.open('" + url + "')\">" + newFileName + "</span></td>";
 | ||
|                         htmlStr += "<td style=\"width: 40%\" align=\"left\"><a style='cursor:pointer;cursor:pointer;cursor:pointer;TEXT-DECORATION: underline;color:blue' onclick='DelAttachment(" + "\"" + scanUrl + "\"" + ")' >删除</a></td></tr>";
 | ||
|                     }
 | ||
|                 }
 | ||
| 
 | ||
|                 htmlStr += "</table>";
 | ||
|             }
 | ||
| 
 | ||
|             return htmlStr;
 | ||
|         }
 | ||
|         #endregion
 | ||
| 
 | ||
|         #region 附件显示带删除 页面存在多个附件
 | ||
|         /// <summary>
 | ||
|         /// 附件显示
 | ||
|         /// </summary>
 | ||
|         public static string ShowAndDeleteNameAttachment(string rootPath, string path, string delName)
 | ||
|         {
 | ||
|             string htmlStr = string.Empty;
 | ||
|             if (!string.IsNullOrEmpty(path))
 | ||
|             {
 | ||
|                 htmlStr = "<table runat='server' cellpadding='5' cellspacing='5' style=\"width: 100%\">";
 | ||
|                 string[] arrStr = path.Split(new string[] { "," }, System.StringSplitOptions.RemoveEmptyEntries);
 | ||
|                 for (int i = 0; i < arrStr.Length; i++)
 | ||
|                 {
 | ||
|                     if (!string.IsNullOrEmpty(arrStr[i]))
 | ||
|                     {
 | ||
|                         string[] urlArray = arrStr[i].Split('\\');
 | ||
|                         string scanUrl = string.Empty;
 | ||
|                         for (int j = 0; j < urlArray.Length; j++)
 | ||
|                         {
 | ||
|                             scanUrl += urlArray[j] + "|";
 | ||
|                         }
 | ||
|                         string url = rootPath + arrStr[i].Replace('\\', '/');
 | ||
|                         string[] subUrl = url.Split('/');
 | ||
|                         string fileName = subUrl[subUrl.Count() - 1];
 | ||
|                         string newFileName = fileName.Substring(fileName.IndexOf("~") + 1);
 | ||
| 
 | ||
|                         htmlStr += "<tr><td style=\"width: 60%\" align=\"left\"><span style='cursor:pointer;cursor:pointer;cursor:pointer;TEXT-DECORATION: underline;color:blue' onclick=\"window.open('" + url + "')\">" + newFileName + "</span></td>";
 | ||
|                         htmlStr += "<td style=\"width: 40%\" align=\"left\"><a style='cursor:pointer;cursor:pointer;cursor:pointer;TEXT-DECORATION: underline;color:blue' onclick='" + delName + "(" + "\"" + scanUrl + "\"" + ")' >删除</a></td></tr>";
 | ||
|                     }
 | ||
|                 }
 | ||
| 
 | ||
|                 htmlStr += "</table>";
 | ||
|             }
 | ||
| 
 | ||
|             return htmlStr;
 | ||
|         }
 | ||
|         #endregion
 | ||
| 
 | ||
|         #region 附件在Image中显示
 | ||
|         /// <summary>
 | ||
|         /// 附件在Image中显示
 | ||
|         /// </summary>
 | ||
|         /// <param name="rootValue">文件夹路径</param>
 | ||
|         /// <param name="path">附件路径</param>
 | ||
|         /// <returns>附件显示HTML</returns>
 | ||
|         public static string ShowImage(string rootValue, string path)
 | ||
|         {
 | ||
|             string htmlStr = string.Empty;
 | ||
|             if (!string.IsNullOrEmpty(path))
 | ||
|             {
 | ||
|                 htmlStr = "<div id=\"img\" runat='server'  style=\"width: 100%;height:100%;display: flex;flex-direction: row;justify-content: flex-start;align-items: flex-start;flex-wrap: wrap;\">";
 | ||
|                 string[] arrStr = path.Split(new string[] { "," }, System.StringSplitOptions.RemoveEmptyEntries);
 | ||
|                 for (int i = 0; i < arrStr.Length; i++)
 | ||
|                 {
 | ||
|                     if (!string.IsNullOrEmpty(arrStr[i]))
 | ||
|                     {
 | ||
|                         string[] urlArray = arrStr[i].Split('\\');
 | ||
|                         string scanUrl = string.Empty;
 | ||
|                         for (int j = 0; j < urlArray.Length; j++)
 | ||
|                         {
 | ||
|                             scanUrl += urlArray[j] + "|";
 | ||
|                         }
 | ||
| 
 | ||
|                         string url = rootValue + arrStr[i].Replace('\\', '/');
 | ||
|                         string[] subUrl = url.Split('/');
 | ||
|                         string fileName = subUrl[subUrl.Count() - 1];
 | ||
|                         string newFileName = fileName.Substring(fileName.IndexOf("~") + 1);
 | ||
| 
 | ||
|                         htmlStr += "<img width='60' height='60' style=\"margin-right:6px;margin-bottom:6px;\" src='" + url + "'></img>";
 | ||
|                     }
 | ||
|                 }
 | ||
| 
 | ||
|                 htmlStr += "</div>";
 | ||
|             }
 | ||
| 
 | ||
|             return htmlStr;
 | ||
|         }
 | ||
|         #endregion
 | ||
| 
 | ||
|         #region 附件上传
 | ||
|         /// <summary>
 | ||
|         /// 附件上传
 | ||
|         /// </summary>
 | ||
|         /// <param name="fileUpload">上传控件</param>
 | ||
|         /// <param name="fileUrl">上传路径</param>
 | ||
|         /// <param name="constUrl">定义路径</param>
 | ||
|         /// <returns></returns>
 | ||
|         public static string UploadAttachment(string rootPath, FileUpload fileUpload, string fileUrl, string constUrl)
 | ||
|         {
 | ||
|             string initFullPath = rootPath + constUrl;
 | ||
|             if (!Directory.Exists(initFullPath))
 | ||
|             {
 | ||
|                 Directory.CreateDirectory(initFullPath);
 | ||
|             }
 | ||
| 
 | ||
|             string filePath = fileUpload.PostedFile.FileName;
 | ||
|             string fileName = Funs.GetNewFileName() + "~" + Path.GetFileName(filePath);
 | ||
|             int count = fileUpload.PostedFile.ContentLength;
 | ||
|             string savePath = constUrl + fileName;
 | ||
|             string fullPath = initFullPath + fileName;
 | ||
| 
 | ||
|             if (!File.Exists(fullPath))
 | ||
|             {
 | ||
|                 byte[] buffer = new byte[count];
 | ||
|                 Stream stream = fileUpload.PostedFile.InputStream;
 | ||
| 
 | ||
|                 stream.Read(buffer, 0, count);
 | ||
|                 MemoryStream memoryStream = new MemoryStream(buffer);
 | ||
|                 FileStream fs = new FileStream(fullPath, FileMode.Create, FileAccess.Write);
 | ||
|                 memoryStream.WriteTo(fs);
 | ||
|                 memoryStream.Flush();
 | ||
|                 memoryStream.Close();
 | ||
|                 fs.Flush();
 | ||
|                 fs.Close();
 | ||
|                 memoryStream = null;
 | ||
|                 fs = null;
 | ||
|                 if (!string.IsNullOrEmpty(fileUrl))
 | ||
|                 {
 | ||
|                     fileUrl += "," + savePath;
 | ||
|                 }
 | ||
|                 else
 | ||
|                 {
 | ||
|                     fileUrl += savePath;
 | ||
|                 }
 | ||
|             }
 | ||
|             else
 | ||
|             {
 | ||
|                 fileUrl = string.Empty;
 | ||
|             }
 | ||
| 
 | ||
|             return fileUrl;
 | ||
|         }
 | ||
|         #endregion
 | ||
| 
 | ||
|         #region 附件上传 同时上传到服务器端
 | ||
|         /// <summary>
 | ||
|         /// 附件上传 同时上传到服务器端
 | ||
|         /// </summary>
 | ||
|         /// <param name="fileUpload">上传控件</param>
 | ||
|         /// <param name="fileUrl">上传路径</param>
 | ||
|         /// <param name="constUrl">定义路径</param>
 | ||
|         /// <param name="serverUrl">服务端地址</param>
 | ||
|         /// <returns></returns>
 | ||
|         public static string UploadAttachmentAndServer(string rootPath, FileUpload fileUpload, string fileUrl, string constUrl, string serverUrl)
 | ||
|         {
 | ||
|             string initFullPath = rootPath + constUrl;
 | ||
|             if (!Directory.Exists(initFullPath))
 | ||
|             {
 | ||
|                 Directory.CreateDirectory(initFullPath);
 | ||
|             }
 | ||
| 
 | ||
|             string initFullPathServer = serverUrl + constUrl;
 | ||
|             if (!Directory.Exists(initFullPathServer))
 | ||
|             {
 | ||
|                 Directory.CreateDirectory(initFullPathServer);
 | ||
|             }
 | ||
| 
 | ||
|             string filePath = fileUpload.PostedFile.FileName;
 | ||
|             string fileName = Funs.GetNewFileName() + "~" + Path.GetFileName(filePath);
 | ||
|             int count = fileUpload.PostedFile.ContentLength;
 | ||
|             string savePath = constUrl + fileName;
 | ||
|             string fullPath = initFullPath + fileName;
 | ||
|             string fullPathServer = initFullPathServer + fileName;
 | ||
| 
 | ||
|             if (!File.Exists(fullPath))
 | ||
|             {
 | ||
|                 byte[] buffer = new byte[count];
 | ||
|                 Stream stream = fileUpload.PostedFile.InputStream;
 | ||
| 
 | ||
|                 stream.Read(buffer, 0, count);
 | ||
|                 MemoryStream memoryStream = new MemoryStream(buffer);
 | ||
|                 FileStream fs = new FileStream(fullPath, FileMode.Create, FileAccess.Write);
 | ||
|                 memoryStream.WriteTo(fs);
 | ||
|                 memoryStream.Flush();
 | ||
|                 memoryStream.Close();
 | ||
|                 fs.Flush();
 | ||
|                 fs.Close();
 | ||
|                 memoryStream = null;
 | ||
|                 fs = null;
 | ||
|                 if (!string.IsNullOrEmpty(fileUrl))
 | ||
|                 {
 | ||
|                     fileUrl += "," + savePath;
 | ||
|                 }
 | ||
|                 else
 | ||
|                 {
 | ||
|                     fileUrl += savePath;
 | ||
|                 }
 | ||
| 
 | ||
|                 MemoryStream memoryStreamEng = new MemoryStream(buffer);
 | ||
|                 FileStream fsServer = new FileStream(fullPathServer, FileMode.Create, FileAccess.Write);
 | ||
|                 memoryStreamEng.WriteTo(fsServer);
 | ||
|                 memoryStreamEng.Flush();
 | ||
|                 memoryStreamEng.Close();
 | ||
|                 fsServer.Flush();
 | ||
|                 fsServer.Close();
 | ||
|                 memoryStreamEng = null;
 | ||
|                 fsServer = null;
 | ||
|             }
 | ||
|             else
 | ||
|             {
 | ||
|                 fileUrl = string.Empty;
 | ||
|             }
 | ||
| 
 | ||
|             return fileUrl;
 | ||
|         }
 | ||
|         #endregion
 | ||
| 
 | ||
|         #region 附件虚删除
 | ||
|         /// <summary>
 | ||
|         ///  附件删除
 | ||
|         /// </summary>
 | ||
|         /// <param name="fileUrl">附件路径</param>
 | ||
|         /// <param name="hiddenUrl">隐藏列路径</param>
 | ||
|         /// <returns></returns>
 | ||
|         public static string DeleteAttachment(string fileUrl, string hiddenUrl)
 | ||
|         {
 | ||
|             string hdAttachUrlStr = hiddenUrl;
 | ||
|             string[] urlArray = hdAttachUrlStr.Split('|');
 | ||
|             string scanUrl = string.Empty;
 | ||
|             for (int j = 0; j < urlArray.Length; j++)
 | ||
|             {
 | ||
|                 if (!string.IsNullOrEmpty(urlArray[j]))
 | ||
|                 {
 | ||
|                     if (j == 0)
 | ||
|                     {
 | ||
|                         scanUrl += urlArray[j];
 | ||
|                     }
 | ||
|                     else
 | ||
|                     {
 | ||
|                         scanUrl += "\\" + urlArray[j];
 | ||
|                     }
 | ||
|                 }
 | ||
|             }
 | ||
| 
 | ||
|             if (!String.IsNullOrEmpty(fileUrl))
 | ||
|             {
 | ||
|                 string[] arrStr = fileUrl.Split(new string[] { "," }, System.StringSplitOptions.RemoveEmptyEntries);
 | ||
|                 fileUrl = null;
 | ||
|                 for (int i = 0; i < arrStr.Length; i++)
 | ||
|                 {
 | ||
|                     if (scanUrl != arrStr[i])
 | ||
|                     {
 | ||
|                         if (i != arrStr.Length - 1)
 | ||
|                         {
 | ||
|                             fileUrl += arrStr[i] + ",";
 | ||
|                         }
 | ||
|                         else
 | ||
|                         {
 | ||
|                             fileUrl += arrStr[i];
 | ||
|                         }
 | ||
|                     }
 | ||
|                 }
 | ||
|             }
 | ||
| 
 | ||
|             return fileUrl;
 | ||
|         }
 | ||
|         #endregion
 | ||
| 
 | ||
|         #region 附件资源删除
 | ||
|         /// <summary>
 | ||
|         ///  附件资源删除
 | ||
|         /// </summary>
 | ||
|         /// <param name="fileUrl">附件路径</param>
 | ||
|         /// <param name="hiddenUrl">隐藏列路径</param>
 | ||
|         /// <returns></returns>
 | ||
|         public static void DeleteFile(string rootPath, string fileUrl)
 | ||
|         {
 | ||
|             if (!string.IsNullOrEmpty(fileUrl))
 | ||
|             {
 | ||
|                 string[] strs = fileUrl.Trim().Split(',');
 | ||
|                 foreach (var item in strs)
 | ||
|                 {
 | ||
|                     string urlFullPath = rootPath + item;
 | ||
|                     if (File.Exists(urlFullPath))
 | ||
|                     {
 | ||
|                         File.Delete(urlFullPath);
 | ||
|                     }
 | ||
|                 }
 | ||
|             }
 | ||
|         }
 | ||
|         #endregion
 | ||
| 
 | ||
|         #region 附件打开公共方法
 | ||
|         /// <summary>
 | ||
|         /// 显示附件文件
 | ||
|         /// </summary>
 | ||
|         public static void ShowAttachmentsFile(string rootPath, string path)
 | ||
|         {
 | ||
|             string[] arrStr = path.Split(new string[] { "," }, System.StringSplitOptions.RemoveEmptyEntries);
 | ||
|             for (int i = 0; i < arrStr.Length; i++)
 | ||
|             {
 | ||
|                 if (!string.IsNullOrEmpty(arrStr[i]))
 | ||
|                 {
 | ||
|                     string[] urlArray = arrStr[i].Split('\\');
 | ||
|                     string scanUrl = string.Empty;
 | ||
|                     for (int j = 0; j < urlArray.Length; j++)
 | ||
|                     {
 | ||
|                         scanUrl += urlArray[j] + "|";
 | ||
|                     }
 | ||
|                     string url = rootPath + arrStr[i].Replace('\\', '/');
 | ||
|                     System.Web.HttpContext.Current.Response.Write("<script type='text/javascript' language='javascript'>window.open('" + url + "')</script>");
 | ||
|                 }
 | ||
|             }
 | ||
|         }
 | ||
|         #endregion
 | ||
| 
 | ||
|         #region 附件在Image中显示
 | ||
|         /// <summary>
 | ||
|         /// 附件在Image中显示
 | ||
|         /// </summary>
 | ||
|         /// <param name="rootValue">文件夹路径</param>
 | ||
|         /// <param name="path">附件路径</param>
 | ||
|         /// <returns>附件显示HTML</returns>
 | ||
|         public static string ShowImage(string rootValue, string path, decimal width, decimal height)
 | ||
|         {
 | ||
|             string htmlStr = string.Empty;
 | ||
|             if (!string.IsNullOrEmpty(path))
 | ||
|             {
 | ||
|                 htmlStr = "<table runat='server' cellpadding='5' cellspacing='5' style=\"width: 100%\">";
 | ||
|                 string[] arrStr = path.Split(new string[] { "," }, System.StringSplitOptions.RemoveEmptyEntries);
 | ||
|                 for (int i = 0; i < arrStr.Length; i++)
 | ||
|                 {
 | ||
|                     if (!string.IsNullOrEmpty(arrStr[i]))
 | ||
|                     {
 | ||
|                         string[] urlArray = arrStr[i].Split('\\');
 | ||
|                         string scanUrl = string.Empty;
 | ||
|                         for (int j = 0; j < urlArray.Length; j++)
 | ||
|                         {
 | ||
|                             scanUrl += urlArray[j] + "|";
 | ||
|                         }
 | ||
| 
 | ||
|                         string url = rootValue + arrStr[i].Replace('\\', '/');
 | ||
|                         string[] subUrl = url.Split('/');
 | ||
|                         string fileName = subUrl[subUrl.Count() - 1];
 | ||
|                         string newFileName = fileName.Substring(fileName.IndexOf("~") + 1);
 | ||
| 
 | ||
|                         htmlStr += "<tr><td style=\"width: 100%\" align=\"left\"><img width='" + width + "' height='" + height + "' src='" + url + "'></img></td>";
 | ||
|                     }
 | ||
|                 }
 | ||
| 
 | ||
|                 htmlStr += "</table>";
 | ||
|             }
 | ||
| 
 | ||
|             return htmlStr;
 | ||
|         }
 | ||
|         #endregion
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 
 | ||
|         /// </summary>
 | ||
|         /// <param name="FileName"></param>
 | ||
|         /// <param name="JpgSize"></param>
 | ||
|         /// <param name="Wpx"></param>
 | ||
|         /// <param name="Hpx"></param>
 | ||
|         /// <returns></returns>
 | ||
|         public static int getJpgSize(string FileName, out System.Drawing.Size JpgSize, out float Wpx, out float Hpx)
 | ||
|         {//C#快速获取JPG图片大小及英寸分辨率
 | ||
|             JpgSize = new System.Drawing.Size(0, 0);
 | ||
|             Wpx = 0; Hpx = 0;
 | ||
|             int rx = 0;
 | ||
|             if (!File.Exists(FileName)) return rx;
 | ||
|             FileStream F_Stream = File.OpenRead(FileName);
 | ||
|             int ff = F_Stream.ReadByte();
 | ||
|             int type = F_Stream.ReadByte();
 | ||
|             if (ff != 0xff || type != 0xd8)
 | ||
|             {//非JPG文件
 | ||
|                 F_Stream.Close();
 | ||
|                 return rx;
 | ||
|             }
 | ||
|             long ps = 0;
 | ||
|             do
 | ||
|             {
 | ||
|                 do
 | ||
|                 {
 | ||
|                     ff = F_Stream.ReadByte();
 | ||
|                     if (ff < 0) //文件结束
 | ||
|                     {
 | ||
|                         F_Stream.Close();
 | ||
|                         return rx;
 | ||
|                     }
 | ||
|                 } while (ff != 0xff);
 | ||
|                 do
 | ||
|                 {
 | ||
|                     type = F_Stream.ReadByte();
 | ||
|                 } while (type == 0xff);
 | ||
|                 //MessageBox.Show(ff.ToString() + "," + type.ToString(), F_Stream.Position.ToString());
 | ||
|                 ps = F_Stream.Position;
 | ||
|                 switch (type)
 | ||
|                 {
 | ||
|                     case 0x00:
 | ||
|                     case 0x01:
 | ||
|                     case 0xD0:
 | ||
|                     case 0xD1:
 | ||
|                     case 0xD2:
 | ||
|                     case 0xD3:
 | ||
|                     case 0xD4:
 | ||
|                     case 0xD5:
 | ||
|                     case 0xD6:
 | ||
|                     case 0xD7:
 | ||
|                         break;
 | ||
|                     case 0xc0: //SOF0段
 | ||
|                         ps = F_Stream.ReadByte() * 256;
 | ||
|                         ps = F_Stream.Position + ps + F_Stream.ReadByte() - 2; //加段长度
 | ||
|                         F_Stream.ReadByte(); //丢弃精度数据
 | ||
|                         //高度
 | ||
|                         JpgSize.Height = F_Stream.ReadByte() * 256;
 | ||
|                         JpgSize.Height = JpgSize.Height + F_Stream.ReadByte();
 | ||
|                         //宽度
 | ||
|                         JpgSize.Width = F_Stream.ReadByte() * 256;
 | ||
|                         JpgSize.Width = JpgSize.Width + F_Stream.ReadByte();
 | ||
|                         //后面信息忽略
 | ||
|                         if (rx != 1 && rx < 3) rx = rx + 1;
 | ||
|                         break;
 | ||
|                     case 0xe0: //APP0段
 | ||
|                         ps = F_Stream.ReadByte() * 256;
 | ||
|                         ps = F_Stream.Position + ps + F_Stream.ReadByte() - 2; //加段长度
 | ||
|                         F_Stream.Seek(5, SeekOrigin.Current); //丢弃APP0标记(5bytes)
 | ||
|                         F_Stream.Seek(2, SeekOrigin.Current); //丢弃主版本号(1bytes)及次版本号(1bytes)
 | ||
|                         int units = F_Stream.ReadByte(); //X和Y的密度单位,units=0:无单位,units=1:点数/英寸,units=2:点数/厘米
 | ||
|                         //水平方向(像素/英寸)分辨率
 | ||
|                         Wpx = F_Stream.ReadByte() * 256;
 | ||
|                         Wpx = Wpx + F_Stream.ReadByte();
 | ||
|                         if (units == 2) Wpx = (float)(Wpx * 2.54); //厘米变为英寸
 | ||
|                         //垂直方向(像素/英寸)分辨率
 | ||
|                         Hpx = F_Stream.ReadByte() * 256;
 | ||
|                         Hpx = Hpx + F_Stream.ReadByte();
 | ||
|                         if (units == 2) Hpx = (float)(Hpx * 2.54); //厘米变为英寸
 | ||
|                         //后面信息忽略
 | ||
|                         if (rx != 2 && rx < 3) rx = rx + 2;
 | ||
|                         break;
 | ||
|                     default: //别的段都跳过////////////////
 | ||
|                         ps = F_Stream.ReadByte() * 256;
 | ||
|                         ps = F_Stream.Position + ps + F_Stream.ReadByte() - 2; //加段长度
 | ||
|                         break;
 | ||
|                 }
 | ||
|                 if (ps + 1 >= F_Stream.Length) //文件结束
 | ||
|                 {
 | ||
|                     F_Stream.Close();
 | ||
|                     return rx;
 | ||
|                 }
 | ||
|                 F_Stream.Position = ps; //移动指针
 | ||
|             } while (type != 0xda); // 扫描行开始
 | ||
|             F_Stream.Close();
 | ||
|             return rx;
 | ||
|         }
 | ||
|     }
 | ||
| }
 |