void onGetFiles(object sender, EventArgs e) { if (!client.isConnected()) { DisplayAlert("FTP", "No server connected", "OK"); return; } client.sendInt(packetTypes.p_dirGet); string path = "c:"; client.sendInt(path.Length); client.sendData(Encoding.UTF8.GetBytes(path)); int amountOfFiles; client.recieveInt(out amountOfFiles); Debug.WriteLine("Amount of files: " + amountOfFiles); if (amountOfFiles == packetTypes.p_isFile) { DisplayAlert("FTP", "Cannot get directory of file", "OK"); return; } List <listItem> files = new List <listItem>(); for (int i = 0; i < amountOfFiles; i++) { Debug.WriteLine("Getting file"); int size; client.recieveInt(out size); Debug.WriteLine("Got size: " + size); byte[] name = new byte[size]; client.recieveData(out name, size); Debug.WriteLine("Recieved data!"); string nameStr = Encoding.UTF8.GetString(name, 0, size); Debug.WriteLine("Got name: " + nameStr); listItem item = new FTPApp.listItem(nameStr, path + "\\" + nameStr); if (nameStr.Contains(".png") || nameStr.Contains(".jpg") || nameStr.Contains(".bmp") || nameStr.Contains(".jpeg")) { item.image = "image.png"; } else if (!nameStr.Contains(".")) { item.image = "folderIcon.png"; } else { item.image = "file.png"; } files.Add(item); } Navigation.PushAsync(new FileList(files, path, client)); }
void openDirectory(string path) { switch (task) { case tasks.download: client.sendInt(packetTypes.p_dirGet); break; case tasks.execute: client.sendInt(packetTypes.p_execute); break; } client.sendInt(path.Length); client.sendData(Encoding.UTF8.GetBytes(path)); Debug.WriteLine("Sent path: " + path); int amountOfFiles; client.recieveInt(out amountOfFiles); if (amountOfFiles == packetTypes.p_isFile) { if (task == tasks.download) { saveFile(path); } else if (task == tasks.execute) { DisplayAlert("FTP", "File opened or ran", "OK"); } return; } List <listItem> files = new List <listItem>(); for (int i = 0; i < amountOfFiles; i++) { int size; client.recieveInt(out size); byte[] name = new byte[size]; if (client.recieveData(out name, size) == -1) { DisplayAlert("FTP", "An error has occured. Please try again", "OK"); break; } string nameStr = Encoding.UTF8.GetString(name, 0, size); listItem item = new FTPApp.listItem(nameStr, path + "\\" + nameStr); if (nameStr.ToLower().Contains(".png") || nameStr.ToLower().Contains(".jpg") || nameStr.ToLower().Contains(".bmp") || nameStr.ToLower().Contains(".jpeg")) { item.image = "image.png"; } else if (nameStr.Equals(".")) { item.image = "refreshIcon.png"; } else if (nameStr.Equals("..")) { item.image = "backArrow.png"; } else if (nameStr.ToLower().Contains(".wav") || nameStr.ToLower().Contains(".mp3") || nameStr.ToLower().Contains(".mp4") || nameStr.ToLower().Contains(".aiff") || nameStr.ToLower().Contains(".mov") || nameStr.ToLower().Contains(".wmo")) { item.image = "mediaIcon.png"; } else if (!nameStr.Contains(".")) { item.image = "folderIcon.png"; } else { item.image = "file.png"; } files.Add(item); } fileSystem.ItemsSource = files; Title = path; }