/// <summary> Downloads file from host using StreamChannel</summary> /// <param name="Filename">Specifies the filename to download</param> public void DownloadFile(string Filename, FileTransferMessage.FileType Type, string ChannelName) { if (StreamingChannels[ChannelName] == null) { Console.Write("\n Unable to find the specified channel \"{0}\"", ChannelName); return; } string rfilename; switch (Type) { case FileTransferMessage.FileType.Library: rfilename = Path.Combine(FilesPath, Filename); break; case FileTransferMessage.FileType.Result: rfilename = Path.Combine(ResultsPath, Filename); break; default: return; } try { Stream strm = StreamingChannels[ChannelName].DownloadFile(Filename, Type); int BlockSize = 1024; byte[] block = new byte[BlockSize]; // Make sure directories to save the downloaded file exist if (!Directory.Exists(FilesPath)) { Directory.CreateDirectory(FilesPath); } if (!Directory.Exists(ResultsPath)) { Directory.CreateDirectory(ResultsPath); } using (var outputStream = new FileStream(rfilename, FileMode.Create)) { while (true) { int bytesRead = strm.Read(block, 0, BlockSize); if (bytesRead > 0) { outputStream.Write(block, 0, bytesRead); } else { break; } } } Console.Write("\n Received file \"{0}\"", Filename); } catch (Exception) { Console.Write("\n Failed to get file \"{0}\" from server", Filename); } }
// streaming service methods region #region /// <summary> Sends file to host using StreamChannel</summary> /// <param name="FilePath">Specifies the path of the file to send</param> public void UploadFile(string FilePath, FileTransferMessage.FileType Type , string ChannelName) { if (StreamingChannels[ChannelName] == null) { Console.Write("\n Unable to find the specifies channel \"{0}\"", ChannelName); return; } string Filename = Path.GetFileName(FilePath); using (var inputStream = new FileStream(FilePath, FileMode.Open)) { // Prepare file streaming message FileTransferMessage msg = new FileTransferMessage(); msg.Type = Type; msg.Filename = Filename; msg.TransferStream = inputStream; // Send the message StreamingChannels[ChannelName].UploadFile(msg); } }
public Stream DownloadFile(string Filename, FileTransferMessage.FileType Type) { string sfilename; switch (Type) { case FileTransferMessage.FileType.Library: sfilename = Path.Combine(FilesPath, Filename); break; case FileTransferMessage.FileType.Result: sfilename = Path.Combine(ResultsPath, Filename); break; case FileTransferMessage.FileType.ConnectionTest: sfilename = Path.Combine(Directory.GetCurrentDirectory(), Filename); break; default: return(null); } FileStream outStream = null; if (File.Exists(sfilename)) { Console.Write("\n Sending File \"{0}\" ... ", Filename); try { outStream = new FileStream(sfilename, FileMode.Open); } catch (Exception ex) { Console.Write("Failed\n\tDetails: {0}\n", ex.Message); } } else { Console.Write("\n Cannot find file \"{0}\" in \"{1}\"", Filename, Directory.GetParent(sfilename)); throw new FileNotFoundException("Failed to find \"" + Filename + "\""); } return(outStream); }