Utils.cs
上传用户:whjkdz
上传日期:2013-05-19
资源大小:79k
文件大小:6k
源码类别:

.net编程

开发平台:

C#

  1. #region License
  2. /*
  3. * SunriseUpload - Asp.net Upload Component
  4. *
  5. * Copyright (C) 2004 mic <mic4free@hotmail.com>
  6. *
  7. * This program is free software; you can redistribute it and/or modify
  8. * it under the terms of the GNU General Public License as published by
  9. * the Free Software Foundation; either version 2 of the License, or
  10. * (at your option) any later version.
  11. *
  12. * This program is distributed in the hope that it will be useful,
  13. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  15. * GNU General Public License for more details.
  16. *
  17. * You should have received a copy of the GNU General Public License
  18. * along with this program; if not, write to the Free Software
  19. * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  20. *
  21. * In case your copy of SunriseUpload does not include a copy of the license, you may find it online at 
  22. * http://www.gnu.org/copyleft/gpl.html
  23. *
  24. * You can find new release of this component at http://athena.9966.org/SunriseUpload .
  25. */
  26. #endregion
  27. using System;
  28. using System.IO;
  29. using System.Text;
  30. using System.Web;
  31. namespace Sunrise.Web.Upload
  32. {
  33. internal class Utils
  34. {
  35. #region Fields
  36. private static string version;
  37. private static string RESOURCE_FILE_PREFIX = "Sunrise.Web.Upload.Resources.";
  38. #endregion
  39. #region Constructors
  40. static Utils()
  41. {
  42. }
  43. public Utils()
  44. {
  45. }
  46. #endregion
  47. /// <summary>
  48. /// return the current httpcontext object.
  49. /// </summary>
  50. /// <returns></returns>
  51. public static HttpContext GetContext()
  52. {
  53. HttpContext context = HttpContext.Current;
  54. if (context == null)
  55. {
  56. throw new Exception("HttpContext not found");
  57. }
  58. return context;
  59. }
  60. /// <summary>
  61. /// return the current version of assembly.
  62. /// </summary>
  63. /// <returns></returns>
  64. public static string GetVersion()
  65. {
  66. if (Utils.version == null)
  67. {
  68. int majorVersion = typeof (Utils).Assembly.GetName().Version.Major;
  69. Utils.version = majorVersion.ToString();
  70. }
  71. return Utils.version;
  72. }
  73. /// <summary>
  74. /// Return the path of upload folder.
  75. /// </summary>
  76. /// <returns></returns>
  77. public static string GetUploadFolder()
  78. {
  79. string uploadFolder = GetContext().Request["Sunrise_Web_Upload_UploadFolder"];
  80. //If upload folder deos not exist, use system temporary folder to hold the file.
  81. if ((uploadFolder == null) || (uploadFolder == string.Empty))
  82. {
  83. uploadFolder = Path.GetTempPath();
  84. }
  85. return uploadFolder;
  86. }
  87. /// <summary>
  88. /// Load file from chache.
  89. /// </summary>
  90. /// <param name="filename"></param>
  91. /// <returns></returns>
  92. private static byte[] LoadFileFromCache(string filename)
  93. {
  94. byte[] buffer;
  95. HttpContext context = GetContext();;
  96. if(context.Cache[RESOURCE_FILE_PREFIX + filename] == null)
  97. {
  98. context.Cache[RESOURCE_FILE_PREFIX + filename] = LoadAssemblyFiles(filename);
  99. }
  100. buffer = (byte[])context.Cache[RESOURCE_FILE_PREFIX + filename];
  101. return buffer;
  102. }
  103. /// <summary>
  104. /// Load file from assembly.
  105. /// </summary>
  106. /// <param name="fileName"></param>
  107. /// <returns></returns>
  108. public static byte[] LoadAssemblyFiles(string fileName)
  109. {
  110. if (fileName == null)
  111. {
  112. throw new ArgumentNullException("filename");
  113. }
  114. string fullFileName = RESOURCE_FILE_PREFIX + fileName;
  115. byte[] fileContent;
  116. using (Stream stream = typeof(Utils).Assembly.GetManifestResourceStream(fullFileName))
  117. {
  118. fileContent = new byte[stream.Length];
  119. stream.Read(fileContent, 0, fileContent.Length);
  120. }
  121. return fileContent;
  122. }
  123. /// <summary>
  124. /// Get html template from buildin resource file
  125. /// </summary>
  126. /// <param name="filename"></param>
  127. /// <returns></returns>
  128. public static StringBuilder GetHtml(string filename)
  129. {
  130. byte[] buffer = LoadFileFromCache(filename);
  131. if (buffer == null)
  132. {
  133. throw new ArgumentNullException("filename", ("isn`t find " + filename));
  134. }
  135. if (buffer.Length == 0)
  136. {
  137. throw new ArgumentNullException("filename", ("isn`t find " + filename));
  138. }
  139. return new StringBuilder(Encoding.Default.GetString(buffer));
  140. }
  141. /// <summary>
  142. /// Return true if client browser > IE 5.5
  143. /// </summary>
  144. /// <returns></returns>
  145. public static bool IsAccordantBrowser()
  146. {
  147. HttpBrowserCapabilities bc = GetContext().Request.Browser;
  148. if(bc.Browser != "IE" || float.Parse(bc.Version) < 5.5 )
  149. {
  150. return false;
  151. }
  152. return true;
  153. }
  154. /// <summary>
  155. /// Turn file size into a readability format.
  156. /// </summary>
  157. /// <param name="size"></param>
  158. /// <returns></returns>
  159. public static string GetFormatString(double size)
  160. {
  161. string sizeString;
  162. if (size >= 1048576)
  163. {
  164. sizeString = (Math.Round(size/1048576, 2) + " m");
  165. }
  166. else if (size >= 1024)
  167. {
  168. sizeString = (Math.Round(size/1024, 2) + " k");
  169. }
  170. else
  171. {
  172. sizeString = (size + " bytes");
  173. }
  174. return sizeString;
  175. }
  176. /// <summary>
  177. /// Turn time string into a readability format.
  178. /// </summary>
  179. /// <param name="span"></param>
  180. /// <returns></returns>
  181. public static string GetFormatString(TimeSpan span)
  182. {
  183. string timeString = string.Empty;
  184. if ((span.Days > 0) || (span.Hours > 0))
  185. {
  186. int hours = ((0x18*span.Days) + span.Hours);
  187. timeString = (timeString + hours + "&nbsp;小时&nbsp;");
  188. }
  189. if (span.Minutes > 0)
  190. {
  191. timeString = (timeString + span.Minutes + "&nbsp;分&nbsp;");
  192. }
  193. if (span.Seconds > 0)
  194. {
  195. timeString = (timeString + span.Seconds + "&nbsp;秒&nbsp;");
  196. }
  197. return timeString;
  198. }
  199. }
  200. }