UploadHelper.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.Web.UI;
  30. using System.Web.UI.WebControls;
  31. namespace Sunrise.Web.Upload
  32. {
  33. public class UploadHelper
  34. {
  35. #region Filds
  36. private string guid;
  37. private string script;
  38. #endregion
  39. #region Properties
  40. /// <summary>
  41. /// Set temporary folder for upload files.
  42. /// </summary>
  43. /// <param name="folderPath"></param>
  44. /// <returns></returns>
  45. public void SetUploadFolder(string folderPath)
  46. {
  47. if (!Path.IsPathRooted(folderPath))
  48. {
  49. if (this.guid != string.Empty)
  50. {
  51. Utils.GetContext().Application.Remove(("_UploadGUID_" + this.guid));
  52. }
  53. throw new IOException("Invaild path.");
  54. }
  55. if (!Directory.Exists(folderPath))
  56. {
  57. if (this.guid != string.Empty)
  58. {
  59. Utils.GetContext().Application.Remove(("_UploadGUID_" + this.guid));
  60. }
  61. throw new Exception("Special path does not exsit.");
  62. }
  63. ((Page) Utils.GetContext().Handler).RegisterHiddenField("Sunrise_Web_Upload_UploadFolder", folderPath);
  64. }
  65. #endregion
  66. public UploadHelper()
  67. {
  68. #region Script string
  69. this.script = String.Empty;
  70. if(Utils.IsAccordantBrowser())
  71. {
  72. script = @"
  73. <script language=javascript>
  74. <!--
  75. url='${url}$';
  76. var submited = false;
  77. function openProgress()
  78. {
  79. if(!submited)
  80. {
  81. var ary = document.getElementsByTagName('INPUT');
  82. var openBar = false;
  83. for(var i=0;i<ary.length;i++)
  84. {
  85. var obj = ary[i];
  86. if(obj.type  == 'file')
  87. {
  88. if(obj.value != '')
  89. {
  90. openBar = true;
  91. break;
  92. }
  93. }
  94. }
  95. if(openBar)
  96. {
  97. window.showModelessDialog(url, window, 'status:no;help:no;resizable:no;scroll:no;dialogWidth:398px;dialogHeight:200px');
  98. submited = true;
  99. }
  100. return true;
  101. }
  102. else
  103. {
  104. event.srcElement.disabled = true;
  105. return false;
  106. }
  107. }
  108. //-->
  109. </script>";
  110. }
  111. else
  112. {
  113. script = @"
  114. <script language=javascript>
  115. <!--
  116. url='${url}$';
  117. var submited = false;
  118. function openProgress()
  119. {
  120. if(!submited)
  121. {
  122. var ary = document.getElementsByTagName('INPUT');
  123. var openBar = false;
  124. for(var i=0;i<ary.length;i++)
  125. {
  126. var obj = ary[i];
  127. if(obj.type  == 'file')
  128. {
  129. if(obj.value != '')
  130. {
  131. openBar = true;
  132. break;
  133. }
  134. }
  135. }
  136. if(openBar)
  137. {
  138. var swd = window.screen.availWidth;
  139. var sht = window.screen.availHeight;
  140. var wd = 398;
  141. var ht =170;
  142. var left = (swd-wd)/2;
  143. var top = (sht-ht)/2;
  144. window.open(url,'_blank','status=no,toolbar=no,menubar=no,location=no,height='+ht+',width='+wd+',left='+left+',top='+top, true);
  145. submited = true;
  146. }
  147. return true;
  148. }
  149. else
  150. {
  151. event.srcElement.disabled = true;
  152. return false;
  153. }
  154. }
  155. //-->
  156. </script>";
  157. }
  158. #endregion
  159. this.guid = string.Empty;
  160. }
  161. /// <summary>
  162. /// Get a uploaded file.
  163. /// </summary>
  164. /// <param name="name"></param>
  165. /// <returns></returns>
  166. public static UploadFile GetUploadFile(string name)
  167. {
  168. UploadFile uploadFile = new UploadFile(name);
  169. return (uploadFile.FilePath == string.Empty) ? null : uploadFile;
  170. }
  171. /// <summary>
  172. /// Get all uploaded files.
  173. /// </summary>
  174. /// <param name="name"></param>
  175. /// <returns></returns>
  176. public static UploadFileCollection GetUploadFileList(string name)
  177. {
  178. UploadFileCollection uploadFiles = new UploadFileCollection();
  179. string content = Utils.GetContext().Request[name];
  180. if ((content == null) || (content == string.Empty))
  181. {
  182. return uploadFiles;
  183. }
  184. else
  185. {
  186. string[] contentArray = content.Split(',');
  187. for (int i = 0; i < contentArray.Length; i++)
  188. {
  189. string curContent = contentArray[i];
  190. uploadFiles.Add(new UploadFile(curContent));
  191. }
  192. }
  193. return uploadFiles;
  194. }
  195. /// <summary>
  196. /// Register progress bar to a button.
  197. /// </summary>
  198. /// <param name="uploadButton"></param>
  199. /// <param name="causesValidation"></param>
  200. public void RegisterProgressBar(Button uploadButton, bool causesValidation)
  201. {
  202. if (causesValidation)
  203. {
  204. uploadButton.CausesValidation = false;
  205. uploadButton.Attributes["onclick"] = "if (typeof(Page_ClientValidate) == 'function') Page_ClientValidate();if(!Page_BlockSubmit){openProgress();}";
  206. }
  207. else
  208. {
  209. uploadButton.Attributes["onclick"] = "openProgress();";
  210. }
  211. this.guid = Guid.NewGuid().ToString();
  212. string progressUrl = "progress.ashx?UploadID=" + this.guid;
  213. Page page = ((Page) Utils.GetContext().Handler);
  214. page.RegisterHiddenField("Sunrise_Web_Upload_UploadGUID", this.guid);
  215. this.script = this.script.Replace("${url}$", progressUrl);
  216. page.RegisterStartupScript("ProgressScript", this.script);
  217. UploadStatus uploadStatus = new UploadStatus();
  218. page.Application.Add(("_UploadGUID_" + this.guid), uploadStatus);
  219. }
  220. }
  221. }