public static async Task download(Element element)
        {
            JavaScriptSerializer ser = new JavaScriptSerializer();
            string json = "[" + ser.Serialize(element) + "]";

            if (element.type == "folder")
            {
                Directory.CreateDirectory(userdir + element.realpath + element.filename);
                return;
            }

            try
            {
                HttpClient client = new HttpClient(handler as HttpMessageHandler);
                var values = new Dictionary<string, string>
                    {
                        { "action", "download" },
                        { "source", json },
                        { "file", currDir }
                    };
                var content = new FormUrlEncodedContent(values);
                HttpResponseMessage response = await client.PostAsync("http://" + server + "/php/files_api.php", content);

                using (FileStream fs = new FileStream(userdir + element.realpath + element.filename, FileMode.Create, FileAccess.Write, FileShare.None))
                {
                    await response.Content.CopyToAsync(fs);
                }
            }
            catch (Exception exp)
            {
                // Do something
            }
        }
        static async Task upload(Element element)
        {
            string path = userdir + element.realpath + element.filename;
            FileAttributes attr = File.GetAttributes(path);
            if ((attr & FileAttributes.Directory) == FileAttributes.Directory)
            {
                // Don't upload empty folders
                return;
            }
            try
            {
                HttpClient client = new HttpClient(handler as HttpMessageHandler);
                using (var multipartFormDataContent = new MultipartFormDataContent())
                {
                    var values = new[]
                    {
                        new KeyValuePair<string, string>("dir", currDir),
                        new KeyValuePair<string, string>("act", "upload"),
                        new KeyValuePair<string, string>("paths", element.realpath),
                    };

                    foreach (var keyValuePair in values)
                    {
                        multipartFormDataContent.Add(new StringContent(keyValuePair.Value), String.Format("\"{0}\"", keyValuePair.Key));
                    }

                    multipartFormDataContent.Add(new ByteArrayContent(File.ReadAllBytes(path)), '"' + "0" + '"', '"' + element.filename + '"');

                    var requestUri = "http://" + server + "/php/files_upload.php";
                    var result = await client.PostAsync(requestUri, multipartFormDataContent);
                }
            }
            catch (Exception exp)
            {
                // Do something
            }
        }