BTC USD 81,215.3 Gold USD 4,376.42
Time now: Jun 1, 12:00 AM

[Tutorial]Belajar Programming .NET Language

yup QueryString...ikut kesesuaian nko nak buat amenda so bleh pakai QueryString atau JavaScript tu...yg preview & upload gambar tu nko kena story sket, nko pakai InfoPath atau nak implement kat Sharepoint atau save direct ker SQL? aku nyer tu x perfect lagi tapi workable laa...:-?

Camni...

Upload image > Preview > If confirm resize image, store the image at folder and get the path to saved inside the database..

Lebih kurang gitu la.. x simpan direct database sebab performance dan size storage akan menjadi suatu isu pada masa akan datang.. hehe
 
Camni...

Upload image > Preview > If confirm resize image, store the image at folder and get the path to saved inside the database..

Lebih kurang gitu la.. x simpan direct database sebab performance dan size storage akan menjadi suatu isu pada masa akan datang.. hehe

Oooo...so fizikal gambar simpan kat folder & path gambar tadi jer simpan dlm database, yup boleh solve performance issue part ni, nko boleh gak masukkan function untuk check dulu saiz gambar sebelum proceed upload, kalu terlalu besar just reject jer...yg aku buat tu xleh resize(maksud nko resize resolution gambar kan?) tapi just crop jer...tu pun boleh set prefix crop dimension nyer size kalu nak...nko tngok sini Jcrop nyer capability :

http://deepliquid.com/projects/Jcrop/demos.php?demo=live_crop

* nko ada gmail x? nnt aku share code tu...

nah nko cuba contoh2 yg ada kat sini :

https://www.google.com/search?q=C#+...9i58j69i62l2.10330j0&sourceid=chrome&ie=UTF-8
 
Last edited:
terima kasih sifu.....memang minat sangat...kalau blajar sendiri guna buku tebal2....x paham
 
Oooo...so fizikal gambar simpan kat folder & path gambar tadi jer simpan dlm database, yup boleh solve performance issue part ni, nko boleh gak masukkan function untuk check dulu saiz gambar sebelum proceed upload, kalu terlalu besar just reject jer...yg aku buat tu xleh resize(maksud nko resize resolution gambar kan?) tapi just crop jer...tu pun boleh set prefix crop dimension nyer size kalu nak...nko tngok sini Jcrop nyer capability :

http://deepliquid.com/projects/Jcrop/demos.php?demo=live_crop

* nko ada gmail x? nnt aku share code tu...

nah nko cuba contoh2 yg ada kat sini :

https://www.google.com/search?q=C#+...9i58j69i62l2.10330j0&sourceid=chrome&ie=UTF-8

Huhu... aku takleh PM bro... penuh dah INBOX tu... hehe

So far aku dah berjaya sikit...

Upload image pakai ajax, simpan byte dalam session. Dan bila confirm, baru resize dan upload terus ke folder..

So aku skang dah berjaya dapatkan gambar daripada byte.. Tapi macam mana kita nak namakan image tu eh?

Aku simpan dalam Image img = new Image();

So aku nak namakan img... then terus simpan dengan command img.save(imagepath);... huhu
 
Last edited:
Huhu... aku takleh PM bro... penuh dah INBOX tu... hehe

So far aku dah berjaya sikit...

Upload image pakai ajax, simpan byte dalam session. Dan bila confirm, baru resize dan upload terus ke folder..

So aku skang dah berjaya dapatkan gambar daripada byte.. Tapi macam mana kita nak namakan image tu eh?

Aku simpan dalam Image img = new Image();

So aku nak namakan img... then terus simpan dengan command img.save(imagepath);... huhu

cer nko share code tu kat sini jap, aku pun nak belajar gak ni...:-?
nih code yg aku cakap tu, nko bleh improve kalu nko nak...

ni bahagian yg aku save image yg aku dah crop tu :

Code:
			string ImageName = Session["WorkingImage"].ToString();
			int w = Convert.ToInt32(W.Value);
			int h = Convert.ToInt32(H.Value);
			int x = Convert.ToInt32(X.Value);
			int y = Convert.ToInt32(Y.Value);

			byte[] CropImage = Crop(path + ImageName, w, h, x, y);
			using (MemoryStream ms = new MemoryStream(CropImage, 0, CropImage.Length))
			{
				ms.Write(CropImage, 0, CropImage.Length);
				using (SD.Image CroppedImage = SD.Image.FromStream(ms, true))
				{
					string SaveTo = SPContext.Current.Web.Url.ToString() + "/_layouts/CariGold/images/crop" + ImageName;
					CroppedImage.Save(path + "\\crop" + ImageName, CroppedImage.RawFormat);
					pnlCrop.Visible = false;
					pnlCropped.Visible = true;
					imgCropped.ImageUrl = SPContext.Current.Web.Url.ToString() + "/_layouts/CariGold/images/crop" + ImageName;
 
Last edited:
cer nko share code tu kat sini jap, aku pun nak belajar gak ni...:-?
nih code yg aku cakap tu, nko bleh improve kalu nko nak...

ni bahagian yg aku save image yg aku dah crop tu :

Code:
			string ImageName = Session["WorkingImage"].ToString();
			int w = Convert.ToInt32(W.Value);
			int h = Convert.ToInt32(H.Value);
			int x = Convert.ToInt32(X.Value);
			int y = Convert.ToInt32(Y.Value);

			byte[] CropImage = Crop(path + ImageName, w, h, x, y);
			using (MemoryStream ms = new MemoryStream(CropImage, 0, CropImage.Length))
			{
				ms.Write(CropImage, 0, CropImage.Length);
				using (SD.Image CroppedImage = SD.Image.FromStream(ms, true))
				{
					string SaveTo = SPContext.Current.Web.Url.ToString() + "/_layouts/CariGold/images/crop" + ImageName;
					CroppedImage.Save(path + "\\crop" + ImageName, CroppedImage.RawFormat);
					pnlCrop.Visible = false;
					pnlCropped.Visible = true;
					imgCropped.ImageUrl = SPContext.Current.Web.Url.ToString() + "/_layouts/CariGold/images/crop" + ImageName;

Nanti aku share, aku tengah siapkan script untuk check file extension...
 
Nanti aku share, aku tengah siapkan script untuk check file extension...

nah code untuk check extension ::D

Code:
		if (Upload.HasFile)
		{
			Session["WorkingImage"] = Upload.FileName;
			String FileExtension = Path.GetExtension(Session["WorkingImage"].ToString()).ToLower();
			String[] allowedExtensions = { ".png", ".jpeg", ".jpg", ".gif" **;
			for (int i = 0; i < allowedExtensions.Length; i++)
			{
				if (FileExtension == allowedExtensions[i])
				{
					FileOK = true;
				**
			**
		**

Code:
		filePath = fuUpload.PostedFile.FileName;
		fileName = Path.GetFileName(filePath);
		fileExtension = Path.GetExtension(fileName);
		fileType = string.Empty;

		switch (fileExtension)
		{ 
			case ".jpg":
				fileType = "image/jpg";
				break;
			case ".png":
				fileType = "image/png";
				break;
			case ".gif":
				fileType = "image/gif";
				break;
			case ".bmp":
				fileType = "image/bmp";
				break;
		**
		if (fileType != string.Empty)
		{
			{
				Stream stmStream = fuUpload.PostedFile.InputStream;
				BinaryReader bnrReader = new BinaryReader(stmStream);
				Byte[] btBytes = bnrReader.ReadBytes((Int32)stmStream.Length);

				//insert the file into database
				string strQuery = "INSERT INTO [dbCarigold].[dbo].[ImageLibrary](Title, Image, Type)" + " VALUES (@Title, @Image, @Type)";
				SqlCommand sqlCommand = new SqlCommand(strQuery);
				sqlCommand.Parameters.Add("@Title", SqlDbType.VarChar).Value = fileName;
				sqlCommand.Parameters.Add("@Type", SqlDbType.VarChar).Value = fileType;
				sqlCommand.Parameters.Add("@Image", SqlDbType.Binary).Value = btBytes;
				InsertUpdateData(sqlCommand);
				lblMessage.ForeColor = System.Drawing.Color.Green;
				lblMessage.Text = "File Uploaded Successfully";
			**
		**
		else
		{
			lblMessage.ForeColor = System.Drawing.Color.Red;
			lblMessage.Text = "File format not recognised." + " Upload Image file formats only.";
		**
 
Orait.. dah siap.. huhu.. pening paler.. haha

Untuk upload image ini, aku ada pakai javascript, C# class untuk ImageHandler, WebConfig dan Ajax control kit.. Agak panjang cara nie... :((


Mula-mula aku create satu class untuk handler image termasuk nak resize, get image daripada byte dan so on on.

Code:
public class imageHandler:[B]IHttpHandler,[/B] IRequiresSessionState
    {
        #region Image Processing

        public void ProcessRequest(HttpContext context)
        {
            context.Response.Clear();

            if (context.Request.QueryString.Count != 0)
            {
                var storedImage = context.Session[detailsInventory.STORED_IMAGE] as byte[];
                if (storedImage != null)
                {
                    Image image = GetImage(storedImage);
                    if (image != null)
                    {
                        context.Response.ContentType = "image/jpeg";
                        image.Save(context.Response.OutputStream, ImageFormat.Jpeg);
                    **
                **
            **
        **

        public Image GetImage(byte[] storedImage)
        {
            var stream = new MemoryStream(storedImage);
            return Image.FromStream(stream);
        **

        public bool IsReusable
        {
            get { return false; **
        **

        #endregion
    **

Kemudian pada webconfig tambah httpHandler

Code:
 <httpHandlers>
      <add validate="false" verb="*" path="imageHandler.ashx" type="malsic_asset.Engine.imageHandler,malsic_asset"/>
    </httpHandlers>


Pada markup language, tambah ajax control kit dan sedikit javascript punya language.

Code:
<script language="javascript" type="text/javascript">
            function getRandomNumber() {
                var randomnumber = Math.random(10000);
                return randomnumber;
            **

            function OnClientAsyncFileUploadComplete(sender, args) {

                var fileName = args.get_fileName();
                var fileExtension = fileName.substring(fileName.lastIndexOf('.') + 1);
                if (fileExtension == 'jpg' || fileExtension == 'png') {
                  
                    var handlerPage = '<%= Page.ResolveClientUrl("~/imageHandler.ashx")%>';
                    var queryString = '?randomno=' + getRandomNumber();
                    var src = handlerPage + queryString;
                    var clientId = '<%=Image1.ClientID %>';
                    document.getElementById(clientId).setAttribute("src", src);
                **
                else {
                    alert("Only JPG and PNG file format allow to upload");               
                **
            **


<asp:AsyncFileUpload ID="asyncFileUpload" runat="server"
                         OnClientUploadComplete="OnClientAsyncFileUploadComplete"
                         OnUploadedComplete="OnAsyncFileUploadComplete" 
                    CompleteBackColor="#99CCFF" UploaderStyle="Modern" />

Pada code behind aspx. Aku buat code selepas upload complete event.

Code:
public static readonly string STORED_IMAGE = "SessionImage";

protected void OnAsyncFileUploadComplete(object sender, AsyncFileUploadEventArgs e)
        {
            if (asyncFileUpload.PostedFile != null)
            {

                HttpPostedFile file = asyncFileUpload.PostedFile;
                byte[] data = ReadFile(file);
                Session[STORED_IMAGE] = data;

            **
        **

        private byte[] ReadFile(HttpPostedFile file)
        {
            byte[] data = new Byte[file.ContentLength];
            file.InputStream.Read(data, 0, file.ContentLength);
            return data;
        **

Kemudian, bila user confirm.. Baru image dari client akan ditukar kepada Image, Resize, Rename dan simpan dalam folder.

Code:
string id = Guid.NewGuid().ToString() + ".jpg";

            assest_engine image = new assest_engine();

            byte[] imgByte = (byte[])Session[STORED_IMAGE];

            return image.resizeImage(Server.MapPath(@"\Images\Models\") + id, imgByte);


Huhu... settle la jugak.. agak mencabar bagi aku... 1st time buat ASP..
 
Orait.. dah siap.. huhu.. pening paler.. haha

Untuk upload image ini, aku ada pakai javascript, C# class untuk ImageHandler, WebConfig dan Ajax control kit.. Agak panjang cara nie... :((


Mula-mula aku create satu class untuk handler image termasuk nak resize, get image daripada byte dan so on on.

Code:
public class imageHandler:[B]IHttpHandler,[/B] IRequiresSessionState
    {
        #region Image Processing

        public void ProcessRequest(HttpContext context)
        {
            context.Response.Clear();

            if (context.Request.QueryString.Count != 0)
            {
                var storedImage = context.Session[detailsInventory.STORED_IMAGE] as byte[];
                if (storedImage != null)
                {
                    Image image = GetImage(storedImage);
                    if (image != null)
                    {
                        context.Response.ContentType = "image/jpeg";
                        image.Save(context.Response.OutputStream, ImageFormat.Jpeg);
                    **
                **
            **
        **

        public Image GetImage(byte[] storedImage)
        {
            var stream = new MemoryStream(storedImage);
            return Image.FromStream(stream);
        **

        public bool IsReusable
        {
            get { return false; **
        **

        #endregion
    **

Kemudian pada webconfig tambah httpHandler

Code:
 <httpHandlers>
      <add validate="false" verb="*" path="imageHandler.ashx" type="malsic_asset.Engine.imageHandler,malsic_asset"/>
    </httpHandlers>


Pada markup language, tambah ajax control kit dan sedikit javascript punya language.

Code:
<script language="javascript" type="text/javascript">
            function getRandomNumber() {
                var randomnumber = Math.random(10000);
                return randomnumber;
            **

            function OnClientAsyncFileUploadComplete(sender, args) {

                var fileName = args.get_fileName();
                var fileExtension = fileName.substring(fileName.lastIndexOf('.') + 1);
                if (fileExtension == 'jpg' || fileExtension == 'png') {
                  
                    var handlerPage = '<%= Page.ResolveClientUrl("~/imageHandler.ashx")%>';
                    var queryString = '?randomno=' + getRandomNumber();
                    var src = handlerPage + queryString;
                    var clientId = '<%=Image1.ClientID %>';
                    document.getElementById(clientId).setAttribute("src", src);
                **
                else {
                    alert("Only JPG and PNG file format allow to upload");               
                **
            **


<asp:AsyncFileUpload ID="asyncFileUpload" runat="server"
                         OnClientUploadComplete="OnClientAsyncFileUploadComplete"
                         OnUploadedComplete="OnAsyncFileUploadComplete" 
                    CompleteBackColor="#99CCFF" UploaderStyle="Modern" />

Pada code behind aspx. Aku buat code selepas upload complete event.

Code:
public static readonly string STORED_IMAGE = "SessionImage";

protected void OnAsyncFileUploadComplete(object sender, AsyncFileUploadEventArgs e)
        {
            if (asyncFileUpload.PostedFile != null)
            {

                HttpPostedFile file = asyncFileUpload.PostedFile;
                byte[] data = ReadFile(file);
                Session[STORED_IMAGE] = data;

            **
        **

        private byte[] ReadFile(HttpPostedFile file)
        {
            byte[] data = new Byte[file.ContentLength];
            file.InputStream.Read(data, 0, file.ContentLength);
            return data;
        **

Kemudian, bila user confirm.. Baru image dari client akan ditukar kepada Image, Resize, Rename dan simpan dalam folder.

Code:
string id = Guid.NewGuid().ToString() + ".jpg";

            assest_engine image = new assest_engine();

            byte[] imgByte = (byte[])Session[STORED_IMAGE];

            return image.resizeImage(Server.MapPath(@"\Images\Models\") + id, imgByte);


Huhu... settle la jugak.. agak mencabar bagi aku... 1st time buat ASP..

cuba bagi full source code jap, nko deploy kat mana ni? inetpub ka mana ka...:-?
 
Chuki2,

getRandomNumber() tu untuk apa???
nko pakai Server.MapPath tu maknanya simpat dlm Inetpub nyer sub folder rite?

Untuk check file extension tu, aku rasa nko boleh cut AJAX kat situ sbb apa yg aku nampak Javascript tu semata2 untuk check extension file....xda hal nak menten, aku just bagi option di mana nko bleh gak guna code yg aku bagi wat checking tu kat code behind...normally gambar yg di upload tu saiz kecik xda la sampai ber'MB (high resolution) so process tu kejap jer dah save file ke server, kalu xda limitation di mana user upload gambar saiz besar so AJAX tu berguna dlm kes ni di mana boleh ringankan beban server melalui checking onClient side(Javascript)...

* Apa2 pun jgn lupa share source code kat sini...baru yg lelain bleh belajar skali...
 
Back
Top
Log in Register