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 } }