1: using System;
2: using System.Web;
3: using System.IO;
4: using System.Data;
5: using System.Data.SqlClient;
6: using System.Web.UI;
7: using System.Web.UI.WebControls;
8: using System.Web.UI.HtmlControls;
9: using IC.PhotoController;
10:
11: namespace TestApp
12: {
13: public class UploadImage : Page
14: {
15: protected HtmlInputFile UP_FILE;
16: protected TextBox txtDescription;
17: protected Label txtMessage;
18: protected System.Web.UI.WebControls.Button Button1;
19: protected Int32 FileLength = 0;
20:
21: private void InitializeComponent()
22: {
23: // do nothing
24: }
25:
26: protected void Button_Submit(System.Object sender, System.EventArgs e)
27: {
28: // used to read the properties of image
29: HttpPostedFile UpFile = UP_FILE.PostedFile;
30:
31: // File size length
32: FileLength = UpFile.ContentLength;
33: try
34: {
35: if (FileLength == 0)
36: {
37: txtMessage.Text = "<b>Please choose a file to upload</b>";
38: }
39: else
40: {
41: Byte[] FileByteArray = new Byte[FileLength];
42: Stream StreamObject = UpFile.InputStream;
43: StreamObject.Read(FileByteArray,0,FileLength);
44:
45: // Creates a MemoryStream object from the Byte[]
46: MemoryStream mStream =new MemoryStream(FileByteArray);
47:
48: // Creates an Image object from the MemoryStream
49: // Because PhotoController only returns Image, we have to have one.
50: System.Drawing.Image image = System.Drawing.Image.FromStream(mStream);
51:
52: // Initializes the PhotoController from the Image object
53: IC.PhotoController.Controller objPc = new IC.PhotoController.Controller(image);
54:
55: // Resize the image to half size, please refer to Resize method with a float parameter
56: image = objPc.Resize(0.5f);
57:
58: // Release PhotoController
59: objPc.Dispose();
60:
61: // We need a new empty MemoryStream
62: mStream.Close();
63: mStream = new MemoryStream();
64:
65: // Save the Image object into MemoryStream. Use Bmp format is a best choice.
66: image.Save(mStream, System.Drawing.Imaging.ImageFormat.Bmp);
67:
68: // retrieve the Byte[], used to save into DataBase
69: FileByteArray = mStream.ToArray();
70:
71: // Because mStream.Length returns long, be aware that if the uploaded file size is too large
72: FileLength = (Int32) mStream.Length;
73:
74: // Release the MemoeryStream resource
75: mStream.Close();
76:
77: // connect to local SQL Server, no comment for this part
78: SqlConnection sqlConn = new SqlConnection("Data Source=Localhost;Initial Catalog=testdb;User ID=sa;Pwd=;");
79: String SqlCmd = "INSERT INTO ImageStore (ImageData, ImageContentType, ImageDescription, ImageSize) VALUES (@Image, @ContentType, @ImageDescription, @ImageSize)";
80: SqlCommand sqlCmd= new SqlCommand(SqlCmd, sqlConn);
81: sqlCmd.Parameters.Add("@Image",SqlDbType.Binary, FileLength).Value = FileByteArray;
82: sqlCmd.Parameters.Add("@ContentType", SqlDbType.VarChar,50).Value = UpFile.ContentType;
83: sqlCmd.Parameters.Add("@ImageDescription", SqlDbType.VarChar,200).Value = txtDescription.Text;
84: sqlCmd.Parameters.Add("@ImageSize", SqlDbType.BigInt,8).Value = FileLength;
85: sqlConn.Open();
86: sqlCmd.ExecuteNonQuery();
87: sqlConn.Close();
88: sqlCmd.Dispose();
89: txtMessage.Text = "<p><b>You have uploaded your image successfully!</b>";
90: }
91: }
92: catch (Exception ex)
93: {
94: txtMessage.Text = ex.Message.ToString();
95: }
96: }
97: }
98: }