How to upload an image from our system or device

How to upload an image using c# . In my game, need to upload Avatar picture . How to upload an image from our system or device.

i’ve got the solution. I got a free plugin for file browser . C# File Browser in Asset Store.

1 .For File browser code please refer Accessing local system ( File Browser ) in Unity answers.

2.Code for uploading image

	using UnityEngine;
	using System.Collections;
	using System.Xml;
	using System.Linq;
	using System.IO;
	using System ;
	using System.Text;
	using System.Runtime.Serialization.Formatters.Binary;
	using System.Net;

	public class c_BrowserManager : MonoBehaviour {

		public GameObject fileBrowserObj;
		public GameObject filePhoto;
		public Texture defaultTexture;
		private Texture fileTexture;
		public   tk2dTextMesh fileNameText;

		private string  imgUploadUrl = "http://google.com/game/data/image_upload?";// here your url
		// Use this for initialization
		void Start () {
			c_global.fileFullName="";
			fileBrowserObj.SetActive (false);
			fileNameText.text ="Choose an image to upload";
		}
		
		// Update is called once per frame
		void Update () 
		{
			if(c_global.isFileBrowserShow == true)
			{
				fileBrowserObj.SetActive (true);
				c_global.isFileBrowserShow = false;
			}
			if(c_global.isFileBrowserHide == true)
			{
				fileBrowserObj.SetActive (false);
				c_global.isFileCheck = true;
				c_global.isFileBrowserHide = false;
			}

			if(c_global.isFileCheck == true)
			{
				if(c_global.fileFullName !="")
				{
					//print ("LLLLL");
					fileNameText.text = c_global.fileFullName;
					StartCoroutine (WaitForImageDisplay());
				}
				c_global.isFileCheck = false;
			}

			if(c_global.isFileUpdateOn == true)
			{
				if(c_global.fileFullName !="")
				{
					//print ("LLLLL");
					fileNameText.text = c_global.fileFullName;
					StartCoroutine (WaitForImageUpload());
				}
				else
				{
					fileNameText.text ="Please select an image";
				}
				c_global.isFileUpdateOn = false;
			}

		
		}

		void PostImageInfo()
		{

		}
		IEnumerator WaitForImageDisplay()
		{
			WWW localFile = new WWW ("file://"+c_global.fileFullName);
			yield return localFile;
			//print ("Image Display Calling");
			if(localFile.error == null)
			{
				fileTexture = localFile.texture;
				filePhoto.renderer.material.mainTexture = fileTexture;
			}
			else
			{
				filePhoto.renderer.material.mainTexture = defaultTexture;
				//print ("Error :"+localFile.error);
			}
		}

		IEnumerator WaitForImageUpload()
		{
			WWW localFile = new WWW ("file://"+c_global.fileFullName);
			yield return localFile;
			//print ("Image Display Calling");
			if(localFile.error == null)
			{
				fileTexture = localFile.texture;
				filePhoto.renderer.material.mainTexture = fileTexture;
				
			}
			else
			{
				filePhoto.renderer.material.mainTexture = defaultTexture;
				//print ("Error :"+localFile.error);
				yield break;
			}
			WWWForm myForm  = new WWWForm();

		//	string result = System.Text.Encoding.UTF8.GetString(localFile.bytes);
		//	string result = System.Text.Encoding.UTF8.GetString(localFile.bytes);

			FileInfo file = new FileInfo(c_global.fileFullName);

			string fileExtension = file.Extension;
			string []tempArray = fileExtension.Split("."[0]);

	//		int leng = fileExtension.Length ;
	//		char [] temp = fileExtension.ToCharArray ();
	//		char [] temp2 = new char[leng-1];
	//
	//		for(int i=0,j=0;i<leng ;i++)
	//		{
	//			if(i>0)
	//			{
	//				temp2[j] = temp[i ] ;
	//				//print ("temp2["+j+"] = " +temp2[j] );
	//				j++;
	//			}
	//		}
	//		file
				fileExtension = tempArray[1];

			string result =Convert.ToBase64String(localFile.bytes);

			//print ("Filetype :"+fileExtension );

			//myForm.AddBinaryData ("img",localFile.bytes);
			//myForm.AddField ("img",localFile.ToString());
			myForm.AddField ("id",c_global.userId);
			myForm.AddField ("type",fileExtension);
			myForm.AddField ("img",result);
			//print (" Image to string :"+result);
			c_global.isImgUploadWinHide = true;
			WWW upload = new WWW (imgUploadUrl ,myForm);

			StartCoroutine (WaitForImageUploadToServer(upload));
			/*

			WWW upload = new WWW (imgUploadUrl ,myForm);
			yield return upload;

			if(upload.error ==null)
			{
				if( upload.text != "" )
				{
					XmlDocument l_doc = new XmlDocument ();
					l_doc.LoadXml(upload.text);
					
					XmlNode  l_status = l_doc.SelectSingleNode("data/status");
					//print(" Upload Status !"+l_status.InnerText);

				}
				else
				{
					//print(" Upload Error Null Text");
				}
			}
			else
			{
				//print(" Upload Error :"+upload.error);
			}*/
		}

		IEnumerator WaitForImageUploadToServer(WWW upload)
		{

			//WWW upload = new WWW (imgUploadUrl ,myForm);
			yield return upload;
			
			if(upload.error ==null)
			{
				if( upload.text != "" )
				{
					XmlDocument l_doc = new XmlDocument ();
					c_global.isFileUpdateCompleted = true;
					c_global.isImageUploadError = true;
					c_global.isImageUploadErrorMsg = "Image uploaded successfully !";
	//				try
	//				{
	//
	//				
	//				l_doc.LoadXml(upload.text);
	//				
	//				XmlNode  l_status = l_doc.SelectSingleNode("data/status");
	//				//print(" Upload Status !"+l_status.InnerText);
	//				}
	//				catch (Exception e)
	//				{
	//					//print (" Exception in uploading :"+e);
	//				}
					
				}
				else
				{
					//print(" Upload Error Null Text");
				}
			}
			else
			{
				//print(" Upload Error :"+upload.error);
				c_global.isImageUploadError = true;
				c_global.isImageUploadErrorMsg = "Image uploading fail !";
			}
		}

	}

public Texture texNotFound;
private string filelocationinput = “”;

    void OnGUI ()
    {
 
       filelocationinput = GUI.TextField (new Rect (10, 10, 128, 20), filelocationinput);
 
       if (GUI.Button (new Rect (2, 10, 128, 32), "Choose Avatar!")) {
         StartCoroutine(LoadTexture ());
 
       }
    }
 
    IEnumerator LoadTexture ()
    {
       WWW www = new WWW ("file://"+filelocationinput);;
 
       yield return www;
 
       Texture avatarImage = null;
 
       if (www.error == null && www.texture != null) {
         avatarImage = www.texture;
       }
       else {
         avatarImage = texNotFound;
         Debug.Log ("Texture not found");
       }
 
       renderer.material.mainTexture = avatarImage;
    }
}

something like this work. attach a material to the object you want to have the avatar texture on.