Author: andrews
Date: 2006-06-21 05:00:40 -0400 (Wed, 21 Jun 2006)
New Revision: 61895
Added:
trunk/mcs/class/System.Web/System.Web.UI.WebControls/FileUpload.cs
trunk/mcs/class/System.Web/Test/System.Web.UI.WebControls/FileUploadTest.cs
Modified:
trunk/mcs/class/System.Web/ChangeLog
trunk/mcs/class/System.Web/System.Web.UI.WebControls/ChangeLog
trunk/mcs/class/System.Web/System.Web.dll.sources
trunk/mcs/class/System.Web/System.Web_test.dll.sources
trunk/mcs/class/System.Web/Test/System.Web.UI.WebControls/ChangeLog
Log:
Add FileUpload implementation
Modified: trunk/mcs/class/System.Web/ChangeLog
===================================================================
--- trunk/mcs/class/System.Web/ChangeLog 2006-06-21 08:50:43 UTC (rev
61894)
+++ trunk/mcs/class/System.Web/ChangeLog 2006-06-21 09:00:40 UTC (rev
61895)
@@ -1,3 +1,8 @@
+2006-06-21 Andrew Skiba <[EMAIL PROTECTED]>
+
+ * System.Web_test.dll.sources add FileUploadTest.cs
+ * System.Web.dll.sources: add FileUpload.cs
+
2006-06-20 Andrew Skiba <[EMAIL PROTECTED]>
* Makefile: add UrlProperty.aspx, UrlProperty.ascx,
Modified: trunk/mcs/class/System.Web/System.Web.UI.WebControls/ChangeLog
===================================================================
--- trunk/mcs/class/System.Web/System.Web.UI.WebControls/ChangeLog
2006-06-21 08:50:43 UTC (rev 61894)
+++ trunk/mcs/class/System.Web/System.Web.UI.WebControls/ChangeLog
2006-06-21 09:00:40 UTC (rev 61895)
@@ -1,3 +1,7 @@
+2006-06-21 Andrew Skiba <[EMAIL PROTECTED]>
+
+ * FileUpload.cs: added
+
2006-06-20 Andrew Skiba <[EMAIL PROTECTED]>
* FormView.cs: handle CssClass attribute
Added: trunk/mcs/class/System.Web/System.Web.UI.WebControls/FileUpload.cs
===================================================================
--- trunk/mcs/class/System.Web/System.Web.UI.WebControls/FileUpload.cs
2006-06-21 08:50:43 UTC (rev 61894)
+++ trunk/mcs/class/System.Web/System.Web.UI.WebControls/FileUpload.cs
2006-06-21 09:00:40 UTC (rev 61895)
@@ -0,0 +1,141 @@
+//
+// (C) 2005 Mainsoft Corporation (http://www.mainsoft.com)
+//
+// Authors:
+// Andrew Skiba <[EMAIL PROTECTED]>
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+#if NET_2_0
+
+using System;
+using System.ComponentModel;
+using System.Web;
+using System.Web.UI;
+using System.Web.UI.HtmlControls;
+using System.Security.Permissions;
+using System.IO;
+
+namespace System.Web.UI.WebControls
+{
+ [ControlValueProperty ("FileBytes")]
+ [ValidationProperty ("FileName")]
+ [Designer
("DesignerBaseTypeNameSystem.ComponentModel.Design.IDesignerDesignerTypeNameSystem.Web.UI.Design.WebControls.PreviewControlDesigner,
System.Design, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a")]
+ [AspNetHostingPermission(SecurityAction.LinkDemand,
Level=AspNetHostingPermissionLevel.Minimal, Unrestricted=false)]
+ [AspNetHostingPermissionAttribute(SecurityAction.InheritanceDemand,
Level=AspNetHostingPermissionLevel.Minimal, Unrestricted=false)]
+ public class FileUpload : WebControl
+ {
+ public FileUpload ()
+ : base (HtmlTextWriterTag.Input)
+ {
+ }
+
+ byte[] cachedBytes;
+
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
+ [Bindable (true, BindingDirection.OneWay)]
+ [Browsable (false)]
+ public byte[] FileBytes
+ {
+ get
+ {
+ if (cachedBytes == null) {
+ cachedBytes = new
byte[FileContent.Length];
+ FileContent.Read (cachedBytes, 0,
cachedBytes.Length);
+ }
+ return (byte [])(cachedBytes.Clone ());
+ }
+ }
+
+ [Browsable(false)]
+
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
+ public Stream FileContent
+ {
+ get
+ {
+ if (PostedFile == null)
+ return Stream.Null;
+ else
+ return PostedFile.InputStream;
+ }
+ }
+
+ [Browsable (false)]
+ [DesignerSerializationVisibility
(DesignerSerializationVisibility.Hidden)]
+ public string FileName
+ {
+ get
+ {
+ if (PostedFile == null)
+ return string.Empty;
+ else
+ return PostedFile.FileName;
+ }
+ }
+
+ [Browsable (false)]
+ [DesignerSerializationVisibility
(DesignerSerializationVisibility.Hidden)]
+ public bool HasFile
+ {
+ get { return PostedFile != null; }
+ }
+
+ [Browsable (false)]
+ [DesignerSerializationVisibility
(DesignerSerializationVisibility.Hidden)]
+ public HttpPostedFile PostedFile
+ {
+ get
+ {
+ if (Page == null || !Page.IsPostBack)
+ return null;
+ if (Context == null || Context.Request == null)
+ return null;
+ return Context.Request.Files[UniqueID];
+ }
+ }
+
+ protected override void AddAttributesToRender (HtmlTextWriter
writer)
+ {
+ writer.AddAttribute (HtmlTextWriterAttribute.Type,
"file");
+ if (!string.IsNullOrEmpty (UniqueID))
+ writer.AddAttribute
(HtmlTextWriterAttribute.Name, UniqueID);
+ base.AddAttributesToRender (writer);
+ }
+
+ protected internal override void OnPreRender (System.EventArgs
e)
+ {
+ base.OnPreRender (e);
+ Page.Form.Enctype = "multipart/form-data";
+ }
+
+ protected internal override void Render (HtmlTextWriter writer)
+ {
+ if (Page != null)
+ Page.VerifyRenderingInServerForm (this);
+ base.Render (writer);
+ }
+
+ [MonoTODO]
+ public void SaveAs (string filename)
+ {
+ throw new NotImplementedException ();
+ }
+ }
+}
+#endif
Modified: trunk/mcs/class/System.Web/System.Web.dll.sources
===================================================================
--- trunk/mcs/class/System.Web/System.Web.dll.sources 2006-06-21 08:50:43 UTC
(rev 61894)
+++ trunk/mcs/class/System.Web/System.Web.dll.sources 2006-06-21 09:00:40 UTC
(rev 61895)
@@ -750,6 +750,7 @@
System.Web.UI.WebControls/DetailsViewUpdateEventHandler.cs
System.Web.UI.WebControls/DropDownList.cs
System.Web.UI.WebControls/EditCommandColumn.cs
+System.Web.UI.WebControls/FileUpload.cs
System.Web.UI.WebControls/FirstDayOfWeek.cs
System.Web.UI.WebControls/FontInfo.cs
System.Web.UI.WebControls/FontNamesConverter.cs
Modified: trunk/mcs/class/System.Web/System.Web_test.dll.sources
===================================================================
--- trunk/mcs/class/System.Web/System.Web_test.dll.sources 2006-06-21
08:50:43 UTC (rev 61894)
+++ trunk/mcs/class/System.Web/System.Web_test.dll.sources 2006-06-21
09:00:40 UTC (rev 61895)
@@ -134,6 +134,7 @@
System.Web.UI.WebControls/DataListTest.cs
System.Web.UI.WebControls/DropDownListTest.cs
System.Web.UI.WebControls/EditCommandColumnTest.cs
+System.Web.UI.WebControls/FileUploadTest.cs
System.Web.UI.WebControls/FontInfoTest.cs
System.Web.UI.WebControls/FontNamesConverterTest.cs
System.Web.UI.WebControls/FontUnitTest.cs
Modified: trunk/mcs/class/System.Web/Test/System.Web.UI.WebControls/ChangeLog
===================================================================
--- trunk/mcs/class/System.Web/Test/System.Web.UI.WebControls/ChangeLog
2006-06-21 08:50:43 UTC (rev 61894)
+++ trunk/mcs/class/System.Web/Test/System.Web.UI.WebControls/ChangeLog
2006-06-21 09:00:40 UTC (rev 61895)
@@ -1,3 +1,7 @@
+2006-06-21 Andrew Skiba <[EMAIL PROTECTED]>
+
+ * FileUploadTest.cs: add new tests for FileUpload control
+
2006-06-20 Andrew Skiba <[EMAIL PROTECTED]>
* ThemeTest.cs: add new test for UrlPropertyAttribute
Added:
trunk/mcs/class/System.Web/Test/System.Web.UI.WebControls/FileUploadTest.cs
===================================================================
--- trunk/mcs/class/System.Web/Test/System.Web.UI.WebControls/FileUploadTest.cs
2006-06-21 08:50:43 UTC (rev 61894)
+++ trunk/mcs/class/System.Web/Test/System.Web.UI.WebControls/FileUploadTest.cs
2006-06-21 09:00:40 UTC (rev 61895)
@@ -0,0 +1,117 @@
+//
+// (C) 2005 Mainsoft Corporation (http://www.mainsoft.com)
+//
+// Authors:
+// Andrew Skiba <[EMAIL PROTECTED]>
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if NET_2_0
+using System;
+using NUnit.Framework;
+using System.Threading;
+using System.Web.UI;
+using System.Web.UI.WebControls;
+using System.IO;
+
+namespace MonoTests.System.Web.UI.WebControls
+{
+ [TestFixture]
+ public class FileUploadTest
+ {
+ class PokerFileUpload : FileUpload
+ {
+ public void DoRender (HtmlTextWriter writer)
+ {
+ base.Render (writer);
+ }
+ }
+
+ [Test]
+ public void RenderWithoutPageTest ()
+ {
+ PokerFileUpload fu = new PokerFileUpload ();
+ using (StringWriter sw = new StringWriter ()) {
+ using (HtmlTextWriter htw = new HtmlTextWriter
(sw)) {
+ fu.DoRender (htw);
+ }
+ sw.Close ();
+ string res = sw.ToString ();
+ Assert.AreEqual ("<input type=\"file\" />",
res);
+ }
+ }
+
+ [Test]
+ public void RenderWithPageTest ()
+ {
+ PokerFileUpload fu = new PokerFileUpload ();
+ fu.Page = new Page ();
+ fu.Page.Controls.Add (fu);
+
+ using (StringWriter sw = new StringWriter ()) {
+ using (HtmlTextWriter htw = new HtmlTextWriter
(sw)) {
+ fu.DoRender (htw);
+ }
+ sw.Close ();
+ }
+ }
+
+ [Test]
+ public void RenderControlTest ()
+ {
+ FileUpload fu = new FileUpload ();
+ fu.Page = new Page ();
+ string res;
+ using (StringWriter sw = new StringWriter ()) {
+ using (HtmlTextWriter htw = new HtmlTextWriter
(sw)) {
+ fu.RenderControl (htw);
+ }
+ sw.Close ();
+ res = sw.ToString ();
+ }
+ Assert.AreEqual ("<input type=\"file\" />", res);
+ }
+ [Test]
+ public void RenderBeginTagTest ()
+ {
+ FileUpload fu = new FileUpload ();
+ fu.Page = new Page ();
+ string res;
+ using (StringWriter sw = new StringWriter ()) {
+ using (HtmlTextWriter htw = new HtmlTextWriter
(sw)) {
+ fu.RenderBeginTag (htw);
+ }
+ sw.Close ();
+ res = sw.ToString ();
+ }
+ Assert.AreEqual ("<input type=\"file\" />", res);
+ }
+ [Test]
+ public void FileContentTest ()
+ {
+ FileUpload fu = new FileUpload ();
+ Stream s = fu.FileContent;
+ Assert.AreSame (s, Stream.Null);
+ }
+
+ }
+}
+#endif
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches